
package com.hlkj.pay.app.merchant.ext.impl.fuyou.handler;
/*
 * Hlpay-Plus aggregate payment system.
 * Copyright (c) 2024-2025 Hlpay Team Copyright has the right of final interpretation.
 */

import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;

import com.hlkj.framework.common.pojo.CommonResult;
import com.hlkj.framework.common.util.id.IdUtils;
import com.hlkj.framework.common.util.json.JsonUtils;
import com.hlkj.pay.app.merchant.ext.dto.access.ChannelMerchantAccessAuthQueryContext;
import com.hlkj.pay.app.merchant.ext.dto.access.ChannelMerchantBusinessContext;
import com.hlkj.pay.app.merchant.ext.dto.access.ChannelMerchantTermContext;
import com.hlkj.pay.app.merchant.ext.impl.fuyou.constant.FuYouConstant;
import com.hlkj.pay.app.merchant.ext.impl.fuyou.dto.FuYouAppChannelParams;
import com.hlkj.pay.app.merchant.ext.impl.fuyou.dto.FuYouConfig;
import com.hlkj.pay.app.merchant.ext.impl.fuyou.dto.FuYouWechatConfigResponse;
import com.hlkj.pay.app.merchant.ext.impl.fuyou.utils.HttpUtils;
import com.hlkj.pay.app.merchant.ext.impl.fuyou.utils.SignUtils;
import com.hlkj.pay.dto.merchant.MerchantWechatConfigAppIdDto;
import com.hlkj.pay.dto.merchant.MerchantWechatConfigDto;
import com.hlkj.pay.dto.merchant.MerchantWechatConfigListDto;
import com.hlkj.pay.dto.pay.PayCommonAppDto;
import com.hlkj.pay.enums.MerchantEnum;
import com.hlkj.pay.enums.PayEnums;
import com.hlkj.pay.infrastructure.model.merchant.MerchantAccessInfoDO;
import com.hlkj.pay.infrastructure.model.merchant.MerchantAppChannelDO;
import com.hlkj.pay.infrastructure.model.pay.PayChannelRequestDO;
import com.hlkj.pay.vo.order.req.MerchantTermAddReq;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

/**
 * @author HlpayTeam
 * @date 2024/10/16 9:10
 */
@Slf4j
@Repository
@RequiredArgsConstructor
@Component
public class FuYouMerchantAccessConfigHandler extends FuYouMerchantCommonParamsHandle {

    /**
     * 微信参数配置
     * 
     * @param channelMerchantBusinessContext
     */
    public void processWxConfigSet(ChannelMerchantBusinessContext channelMerchantBusinessContext) {
        CommonResult<FuYouConfig> fuYouConfigCommonResult = channelConfig(channelMerchantBusinessContext.getProviderChannelConfig());
        // 配置转换
        if (!fuYouConfigCommonResult.isSuccess()) {
            channelMerchantBusinessContext.setRemark(fuYouConfigCommonResult.getMsg());
            channelMerchantBusinessContext.setProcessStatus(Boolean.FALSE);
            return;
        }
        FuYouConfig fuYouConfig = fuYouConfigCommonResult.getData();
        // 1. 数据初始化
        PayChannelRequestDO payChannelRequestDO = new PayChannelRequestDO();
        channelMerchantBusinessContext.setPayChannelRequestDO(payChannelRequestDO);
        MerchantAccessInfoDO merchantAccessInfo = channelMerchantBusinessContext.getMerchantAccessDto().getMerchantAccessInfo();
        try {
            List<PayCommonAppDto> payCommonAppList = channelMerchantBusinessContext.getPayCommonAppList();
            List<PayCommonAppDto> wechatCommonApp = null;
            if (!CollectionUtils.isEmpty(payCommonAppList)) {
                wechatCommonApp = payCommonAppList.stream().filter(payCommonAppDto -> PayEnums.PAY_TYPE.WECHAT.getCode().equals(payCommonAppDto.getPayWayDO().getType()))
                        .collect(Collectors.toList());
            }
            // 没有微信执行 配置完成
            if (CollectionUtils.isEmpty(wechatCommonApp) ) {
                channelMerchantBusinessContext.setAuditStatus(MerchantEnum.CHANNEL_CONFIG_STATUS.WECHAT_CONFIGING);
                return;
            }
            // 新增参数转换
            String requestId = IdUtils.getSnowflake().nextIdStr();
            Map<String, Object> params = FuYouMerchantParamsHandle.wechatConfigSetParams(merchantAccessInfo.getSubMchId(), channelMerchantBusinessContext.getDomain(), wechatCommonApp);
            params.put("traceNo", requestId);
            params.put("insCd", fuYouConfig.getInsCd());
            if (fuYouConfig.getSubInsCd() != null) {
                params.put("sub_ins_cd", fuYouConfig.getSubInsCd());
            }
            params.put("agencyType", "0");
            params.put("channelFlag", "1");

            params.put("sign", SignUtils.getSign(params, fuYouConfig.getMd5Key(), "GBK"));
            log.info("富友微信配置init信息请求参数:{}", params);
            Map<String, String> requestParams = new HashMap<>();
            requestParams.put("req", JsonUtils.toJsonString(params));
            log.info("富友微信配置init信息req参数:{}", JsonUtils.toJsonString(params));
            String requestUrl = FuYouConstant.MERCHANT_WECHAT_CONFIG_SET;
            // 记录请求参数
            payChannelRequestDO.setRequestId(requestId);
            payChannelRequestDO.setRequestParams(JsonUtils.toJsonString(params));
            payChannelRequestDO.setRequestUrl(requestUrl);
            String url = domain(channelMerchantBusinessContext.isTest()) + requestUrl;
            payChannelRequestDO.setRequestTime(System.currentTimeMillis());
            // 发起请求
            String response = HttpUtils.post(url, requestParams);
            payChannelRequestDO.setResponse(JsonUtils.toJsonString(response));
            FuYouWechatConfigResponse fuYouResponse = JsonUtils.parseObject(response, FuYouWechatConfigResponse.class);
            if (channelMerchantBusinessContext.isTest()) {
                channelMerchantBusinessContext.setAuditStatus(MerchantEnum.CHANNEL_CONFIG_STATUS.WECHAT_CONFIGING);
            }
            else {
                if (FuYouConstant.REQUEST_SUCCESS.equals(fuYouResponse.getRetCode())) {
                    List<FuYouWechatConfigResponse.ConfigsBean> configs = fuYouResponse.getConfigs();
                    String errorMsg = "";
                    if (!CollectionUtils.isEmpty(configs)) {
                        FuYouWechatConfigResponse.ConfigsBean configsBean = configs.get(0);
                        if ("FAIL".equals(configsBean.getJsapiCode())) {
                            errorMsg = errorMsg + configsBean.getJsapiMsg() + ";";
                        }
                        if ("FAIL".equals(configsBean.getSubAppidCode())) {
                            errorMsg = errorMsg + configsBean.getSubAppidMsg() + ";";
                        }
                        if ("FAIL".equals(configsBean.getSubscribeAppidCode())) {
                            errorMsg = errorMsg + configsBean.getSubscribeAppidMsg() + ";";
                        }
                        if (StringUtils.hasText(errorMsg)) {
                            channelMerchantBusinessContext.setProcessStatus(false);
                            channelMerchantBusinessContext.setRemark(errorMsg);
                        }
                    }

                    // 富友 微信 支付宝 富友自己认证
                    channelMerchantBusinessContext.setAuditStatus(MerchantEnum.CHANNEL_CONFIG_STATUS.WECHAT_CONFIGING);
                }
                else {
                    channelMerchantBusinessContext.setProcessStatus(false);
                    channelMerchantBusinessContext.setRemark(fuYouResponse.getRetMsg());
                }
            }
        }
        catch (Exception e) {
            e.printStackTrace();
            log.error("富友微信配置init请求失败,失败信息 message: {}", e.getMessage());
            channelMerchantBusinessContext.setRemark("富友微信配置init请求失败,失败信息" + e.getMessage());
            channelMerchantBusinessContext.setProcessStatus(Boolean.FALSE);
            // channelMerchantBusinessContext.setAccessStatus(MerchantEnum.ACCESS_STATUS.APPROVE_REFUSE);
        }

    }
    /**
     * 微信参数配置
     *
     * @param channelMerchantBusinessContext
     */
    public void processWxConfigSetAdd(ChannelMerchantBusinessContext channelMerchantBusinessContext) {
        CommonResult<FuYouConfig> fuYouConfigCommonResult = channelConfig(channelMerchantBusinessContext.getProviderChannelConfig());
        // 配置转换
        if (!fuYouConfigCommonResult.isSuccess()) {
            channelMerchantBusinessContext.setRemark(fuYouConfigCommonResult.getMsg());
            channelMerchantBusinessContext.setProcessStatus(Boolean.FALSE);
            return;
        }
        FuYouConfig fuYouConfig = fuYouConfigCommonResult.getData();
        // 1. 数据初始化
        PayChannelRequestDO payChannelRequestDO = new PayChannelRequestDO();
        channelMerchantBusinessContext.setPayChannelRequestDO(payChannelRequestDO);
        MerchantAccessInfoDO merchantAccessInfo = channelMerchantBusinessContext.getMerchantAccessDto().getMerchantAccessInfo();
        MerchantWechatConfigDto merchantWechatConfigDto = channelMerchantBusinessContext.getMerchantWechatConfigDto();
        try {
            // 新增参数转换
            String requestId = IdUtils.getSnowflake().nextIdStr();
            Map<String, Object> params = FuYouMerchantParamsHandle.wechatConfigSetParams(merchantAccessInfo.getSubMchId(), merchantWechatConfigDto);
            params.put("traceNo", requestId);
            params.put("insCd", fuYouConfig.getInsCd());
            if (fuYouConfig.getSubInsCd() != null) {
                params.put("sub_ins_cd", fuYouConfig.getSubInsCd());
            }
            params.put("agencyType", "0");
            params.put("channelFlag", "1");

            params.put("sign", SignUtils.getSign(params, fuYouConfig.getMd5Key(), "GBK"));
            log.info("富友微信配置add信息请求参数:{}", params);
            Map<String, String> requestParams = new HashMap<>();
            requestParams.put("req", JsonUtils.toJsonString(params));
            log.info("富友微信配置add信息req参数:{}", JsonUtils.toJsonString(params));
            String requestUrl = FuYouConstant.MERCHANT_WECHAT_CONFIG_SET;
            // 记录请求参数
            payChannelRequestDO.setRequestId(requestId);
            payChannelRequestDO.setRequestParams(JsonUtils.toJsonString(params));
            payChannelRequestDO.setRequestUrl(requestUrl);
            String url = domain(channelMerchantBusinessContext.isTest()) + requestUrl;
            payChannelRequestDO.setRequestTime(System.currentTimeMillis());
            // 发起请求
            String response = HttpUtils.post(url, requestParams);
            payChannelRequestDO.setResponse(JsonUtils.toJsonString(response));
            FuYouWechatConfigResponse fuYouResponse = JsonUtils.parseObject(response, FuYouWechatConfigResponse.class);
            if (channelMerchantBusinessContext.isTest()) {
                channelMerchantBusinessContext.setAuditStatus(MerchantEnum.CHANNEL_CONFIG_STATUS.WECHAT_CONFIGING);
            }
            else {
                if (FuYouConstant.REQUEST_SUCCESS.equals(fuYouResponse.getRetCode())) {
                    List<FuYouWechatConfigResponse.ConfigsBean> configs = fuYouResponse.getConfigs();
                    String errorMsg = "";
                    if (!CollectionUtils.isEmpty(configs)) {
                        FuYouWechatConfigResponse.ConfigsBean configsBean = configs.get(0);
                        if ("FAIL".equals(configsBean.getJsapiCode())) {
                            errorMsg = errorMsg + configsBean.getJsapiMsg() + ";";
                        }
                        if ("FAIL".equals(configsBean.getSubAppidCode())) {
                            errorMsg = errorMsg + configsBean.getSubAppidMsg() + ";";
                        }
                        if ("FAIL".equals(configsBean.getSubscribeAppidCode())) {
                            errorMsg = errorMsg + configsBean.getSubscribeAppidMsg() + ";";
                        }
                        if (StringUtils.hasText(errorMsg)) {
                            channelMerchantBusinessContext.setProcessStatus(false);
                            channelMerchantBusinessContext.setRemark(errorMsg);
                        }
                    }

                    // 富友 微信 支付宝 富友自己认证
                    channelMerchantBusinessContext.setAuditStatus(MerchantEnum.CHANNEL_CONFIG_STATUS.WECHAT_CONFIGING);
                }
                else {
                    channelMerchantBusinessContext.setProcessStatus(false);
                    channelMerchantBusinessContext.setRemark(fuYouResponse.getRetMsg());
                }
            }
        }
        catch (Exception e) {
            e.printStackTrace();
            log.error("富友微信配置add请求失败,失败信息 message: {}", e.getMessage());
            channelMerchantBusinessContext.setRemark("富友微信配置add请求失败,失败信息" + e.getMessage());
            channelMerchantBusinessContext.setProcessStatus(Boolean.FALSE);
            // channelMerchantBusinessContext.setAccessStatus(MerchantEnum.ACCESS_STATUS.APPROVE_REFUSE);
        }

    }

    /**
     * 微信参数配置查询
     * 
     * @param channelMerchantAccessAuthQueryContext
     */
    public void processWxConfigQuery(ChannelMerchantAccessAuthQueryContext channelMerchantAccessAuthQueryContext) {
        CommonResult<FuYouConfig> fuYouConfigCommonResult = channelConfig(channelMerchantAccessAuthQueryContext.getProviderChannelConfig());
        // 配置转换
        if (!fuYouConfigCommonResult.isSuccess()) {
            channelMerchantAccessAuthQueryContext.setRemark(fuYouConfigCommonResult.getMsg());
            channelMerchantAccessAuthQueryContext.setProcessStatus(Boolean.FALSE);
            return;
        }
        FuYouConfig fuYouConfig = fuYouConfigCommonResult.getData();
        // 1. 数据初始化
        MerchantAccessInfoDO merchantAccessInfo = channelMerchantAccessAuthQueryContext.getMerchantAccessInfo();
        try {
            // 新增参数转换
            String requestId = IdUtils.getSnowflake().nextIdStr();
            Map<String, Object> params = FuYouMerchantParamsHandle.merchantQueryParams(merchantAccessInfo.getSubMchId());
            params.put("traceNo", requestId);
            params.put("insCd", fuYouConfig.getInsCd());
            if (fuYouConfig.getSubInsCd() != null) {
                params.put("sub_ins_cd", fuYouConfig.getSubInsCd());
            }
            params.put("agencyType", "0");
            params.put("channelFlag", "1");
            params.put("sign", SignUtils.getSign(params, fuYouConfig.getMd5Key(), "GBK"));
            log.info("富友微信配置查询信息请求参数:{}", params);
            Map<String, String> requestParams = new HashMap<>();
            requestParams.put("req", JsonUtils.toJsonString(params));
            log.info("富友微信配置查询信息req参数:{}", JsonUtils.toJsonString(params));
            String requestUrl = FuYouConstant.MERCHANT_WECHAT_CONFIG_QUERY;
            String url = domain(channelMerchantAccessAuthQueryContext.isTest()) + requestUrl;
            // 发起请求
            String response = HttpUtils.post(url, requestParams);
            FuYouWechatConfigResponse fuYouResponse = JsonUtils.parseObject(response, FuYouWechatConfigResponse.class);
            if (channelMerchantAccessAuthQueryContext.isTest()) {
                channelMerchantAccessAuthQueryContext.setAuditStatus(MerchantEnum.CHANNEL_CONFIG_STATUS.WECHAT_AUTH);
            }
            else {
                if (FuYouConstant.REQUEST_SUCCESS.equals(fuYouResponse.getRetCode())) {
                    // 富友 微信 支付宝 富友自己认证
                    channelMerchantAccessAuthQueryContext.setAuditStatus(MerchantEnum.CHANNEL_CONFIG_STATUS.WECHAT_AUTH);
                    List<FuYouWechatConfigResponse.ConfigsBean> configs = fuYouResponse.getConfigs();
                    if (!CollectionUtils.isEmpty(configs)) {
                        MerchantWechatConfigListDto merchantWechatConfigListDto = new MerchantWechatConfigListDto();
                        merchantWechatConfigListDto.setAppIdList(new ArrayList<>());
                        FuYouWechatConfigResponse.ConfigsBean configsBean = configs.get(0);
                        if (StringUtils.hasText(configsBean.getJsapiPathList())) {
                            merchantWechatConfigListDto.setJsApiPath(JsonUtils.parseArray(configsBean.getJsapiPathList(), String.class));
                        }
                        if (StringUtils.hasText(configsBean.getAppidConfigList())) {
                            List<FuYouWechatConfigResponse.AppIdConfig> appidConfigList = JsonUtils.parseArray(configsBean.getAppidConfigList(),
                                    FuYouWechatConfigResponse.AppIdConfig.class);
                            appidConfigList.stream().forEach(appIdConfig -> {
                                MerchantWechatConfigAppIdDto merchantWechatConfigAppIdDto = new MerchantWechatConfigAppIdDto();
                                merchantWechatConfigAppIdDto.setSubAppid(appIdConfig.getSub_appid());
                                merchantWechatConfigAppIdDto.setSubscribeAppid(appIdConfig.getSubscribe_appid());
                                merchantWechatConfigListDto.getAppIdList().add(merchantWechatConfigAppIdDto);
                            });
                        }
                        channelMerchantAccessAuthQueryContext.setMerchantWechatConfigListDto(merchantWechatConfigListDto);
                    }

                }
                else {
                    channelMerchantAccessAuthQueryContext.setProcessStatus(false);
                    channelMerchantAccessAuthQueryContext.setRemark(fuYouResponse.getRetMsg());
                }
            }
        }
        catch (Exception e) {
            e.printStackTrace();
            log.error("富友微信配置查询请求失败,失败信息 message: {}", e.getMessage());
            channelMerchantAccessAuthQueryContext.setRemark("富友微信配置查询请求失败,失败信息" + e.getMessage());
            channelMerchantAccessAuthQueryContext.setProcessStatus(Boolean.FALSE);
            // channelMerchantAccessAuthQueryContext.setAccessStatus(MerchantEnum.ACCESS_STATUS.APPROVE_REFUSE);
        }
    }

    /**
     * 微信参数配置查询
     *
     * @param channelMerchantAccessAuthQueryContext
     */
    public void processWxAuthQuery(ChannelMerchantAccessAuthQueryContext channelMerchantAccessAuthQueryContext) {
        CommonResult<FuYouConfig> fuYouConfigCommonResult = channelConfig(channelMerchantAccessAuthQueryContext.getProviderChannelConfig());
        // 配置转换
        if (!fuYouConfigCommonResult.isSuccess()) {
            channelMerchantAccessAuthQueryContext.setRemark(fuYouConfigCommonResult.getMsg());
            channelMerchantAccessAuthQueryContext.setProcessStatus(Boolean.FALSE);
            return;
        }
        FuYouConfig fuYouConfig = fuYouConfigCommonResult.getData();
        // 1. 数据初始化
        MerchantAccessInfoDO merchantAccessInfo = channelMerchantAccessAuthQueryContext.getMerchantAccessInfo();
        try {
            // 新增参数转换
            String requestId = IdUtils.getSnowflake().nextIdStr();
            Map<String, Object> params = new HashMap<>();
            params.put("trace_no", requestId);
            params.put("ins_cd", fuYouConfig.getInsCd());
            params.put("mchnt_cd", merchantAccessInfo.getSubMchId());
            params.put("sign", SignUtils.getMerchantSign(params, fuYouConfig));
            String requestUrl = FuYouConstant.MERCHANT_WECHAT_AUTH_QUERY;
            String url = domain(channelMerchantAccessAuthQueryContext.isTest()) + requestUrl;
            log.info("富友微信认证请求参数:{}", JsonUtils.toJsonString(params));
            String mapToXml = SignUtils.convertMapToXml(params);
            log.info("富友微信认证请求xml参数:{}", mapToXml);
            Map<String, String> requestParams = new HashMap<>();
            mapToXml = URLEncoder.encode(mapToXml, FuYouConstant.charset);
            requestParams.put("req", mapToXml);
            log.info("富友微信认证req参数:{}", JsonUtils.toJsonString(requestParams));
            String response = HttpUtils.post(url, requestParams);
            // String response =
            // "%3C%3Fxml+version%3D%221.0%22+encoding%3D%22gbk%22+standalone%3D%22yes%22%3F%3E%3Cxml%3E%3Ctrace_no%3E1856865547386036224%3C%2Ftrace_no%3E%3Creturn_code%3ESUCCESS%3C%2Freturn_code%3E%3Creturn_msg%3E%3C%2Freturn_msg%3E%3Cmchnt_cd%3E0005210F8121151%3C%2Fmchnt_cd%3E%3Cresult_msg%3EOK%3C%2Fresult_msg%3E%3Cresult_code%3ESUCCESS%3C%2Fresult_code%3E%3Cchannel_infos%3E%3Cchannel_info%3E%3Cchannel_name%3E%C6%D5%CD%A81%3C%2Fchannel_name%3E%3Csub_mch_id%3E713422908%3C%2Fsub_mch_id%3E%3Cauthorize_state%3E3%3C%2Fauthorize_state%3E%3Creject_msgs%3E%3C%2Freject_msgs%3E%3Cqr_code%3E%2F9j%2F4AAQSkZJRgABAQAAAQABAAD%2F2wBDABQODxIPDRQSEBIXFRQYHjIhHhwcHj0sLiQySUBMS0dARkVQWnNiUFVtVkVGZIhlbXd7gYKBTmCNl4x9lnN%2BgXz%2FwAALCAGuAa4BAREA%2F8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL%2F8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4%2BTl5ufo6erx8vP09fb3%2BPn6%2F9oACAEBAAA%2FAOzooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooqC8u4bG2e4uX8uJMbmwTjJx0H1rM%2F4SvRf%2Bf3%2FwAhP%2FhR%2FwAJXov%2FAD%2B%2F%2BQn%2FAMKP%2BEr0X%2Fn9%2FwDIT%2F4Uf8JXov8Az%2B%2F%2BQn%2Fwo%2F4SvRf%2Bf3%2FyE%2F8AhR%2Fwlei%2F8%2Fv%2FAJCf%2FCj%2FAISvRf8An9%2F8hP8A4Uf8JXov%2FP7%2FAOQn%2FwAKu6fq1lqnmfYpvN8vG75GXGc46j2NTXl3DY2z3Fy%2FlxJjc2CcZOOg%2BtZn%2FCV6L%2Fz%2B%2FwDkJ%2F8ACj%2FhK9F%2F5%2Ff%2FACE%2F%2BFH%2FAAlei%2F8AP7%2F5Cf8Awq7p%2BrWWqeZ9im83y8bvkZcZzjqPY1doorLvPEGmWNy9vc3WyVMbl8tjjIz2Hoan0%2FVrLVPM%2BxTeb5eN3yMuM5x1Hsau0UVl3niDTLG5e3ubrZKmNy%2BWxxkZ7D0NT6fq1lqnmfYpvN8vG75GXGc46j2NXaKxf%2BEr0X%2Fn9%2F8AIT%2F4Vp2d3DfWyXFs%2FmRPna2CM4OOh%2BlT1BeXcNjbPcXL%2BXEmNzYJxk46D61mf8JXov8Az%2B%2F%2BQn%2FwrarLvPEGmWNy9vc3WyVMbl8tjjIz2Hoah%2F4SvRf%2Bf3%2FyE%2F8AhR%2Fwlei%2F8%2Fv%2FAJCf%2FCj%2FAISvRf8An9%2F8hP8A4VtVl3niDTLG5e3ubrZKmNy%2BWxxkZ7D0NQ%2F8JXov%2FP7%2FAOQn%2FwAKP%2BEr0X%2Fn9%2F8AIT%2F4Uf8ACV6L%2FwA%2Fv%2FkJ%2FwDCj%2FhK9F%2F5%2Ff8AyE%2F%2BFH%2FCV6L%2FAM%2Fv%2FkJ%2F8KP%2BEr0X%2Fn9%2F8hP%2FAIUf8JXov%2FP7%2FwCQn%2Fwo%2FwCEr0X%2FAJ%2Ff%2FIT%2FAOFbVFFFFFFYvi%2F%2FAJFu7%2F4B%2FwChrXmdFFFFFFFdn8Pf%2BYh%2F2z%2F9mrZ8X%2F8AIt3f%2FAP%2FAENa8zoors%2Fh7%2FzEP%2B2f%2Fs1dnRRXmXi%2F%2FkZLv%2FgH%2FoC1tfD3%2FmIf9s%2F%2FAGauzoorzLxf%2FwAjJd%2F8A%2F8AQFra%2BHv%2FADEP%2B2f%2FALNXZ0V4zXpnhD%2FkW7T%2FAIH%2FAOhtW1WL4v8A%2BRbu%2FwDgH%2Foa15nXs1eZeL%2F%2BRku%2F%2BAf%2BgLWNRRXs1eZeL%2F8AkZLv%2FgH%2FAKAtY1FFFFFFFezUUUUUUVi%2BL%2F8AkW7v%2FgH%2FAKGteZ17NRRRRRXmXi%2F%2FAJGS7%2F4B%2FwCgLW18Pf8AmIf9s%2F8A2auzorxmvTPCH%2FIt2n%2FA%2FwD0NqxviF%2FzD%2F8Atp%2F7LXGUV7NRRRRXjNemeEP%2BRbtP%2BB%2F%2BhtWN8Qv%2BYf8A9tP%2FAGWsXwh%2FyMlp%2FwAD%2FwDQGr02vGaKKKK9morjPiF%2FzD%2F%2B2n%2FstYvhD%2FkZLT%2Fgf%2FoDV6bRXmXi%2FwD5GS7%2FAOAf%2BgLW18Pf%2BYh%2F2z%2F9mrs6KKKKxfF%2F%2FIt3f%2FAP%2FQ1rzOvZqKKKKKKxfF%2F%2FACLd3%2FwD%2FwBDWvM69mrhfEXiDU7HW7m3trny4k27V8tTjKg9x6msz%2FhK9a%2F5%2Ff8AyEn%2BFH%2FCV61%2Fz%2B%2F%2BQk%2Fwo%2F4SvWv%2Bf3%2FyEn%2BFem15l4v%2FAORku%2F8AgH%2FoC1tfD3%2FmIf8AbP8A9mrf8R3c1jolzcWz%2BXKm3a2AcZYDv7GuG%2F4SvWv%2Bf3%2FyEn%2BFY1adn4g1Oxtkt7a62RJnavlqcZOe49TUOoate6p5f22bzfLzt%2BRVxnGeg9hVKitn%2FhK9a%2F5%2Ff%2FISf4Uf8JXrX%2FP7%2FwCQk%2Fwo%2FwCEr1r%2FAJ%2Ff%2FISf4Vp%2BHfEGp32t21vc3PmRPu3L5ajOFJ7D1Fd1WL%2Fwimi%2F8%2BX%2FAJFf%2FGtOztIbG2S3tk8uJM7VyTjJz1P1qHUNJstU8v7bD5vl52%2FOy4zjPQ%2BwqCz8P6ZY3KXFta7JUztbzGOMjHc%2BhrUrF%2F4RTRf%2BfL%2FyK%2F8AjR%2Fwimi%2F8%2BX%2FAJFf%2FGuZ8Y6TZaX9j%2BxQ%2BV5m%2Fd8zNnG3HU%2B5rmaK9mrhfEXiDU7HW7m3trny4k27V8tTjKg9x6mp%2FD3%2FABU%2F2j%2B2v9K%2BzbfK%2Fg27s5%2B7jP3R19KuavpNloemzajpkPkXcO3y5NzNtywU8MSOhNcz%2FwAJXrX%2FAD%2B%2F%2BQk%2Fwr02vMvF%2FwDyMl3%2FAMA%2F9AWtr4e%2F8xD%2FALZ%2F%2BzVv%2BI7uax0S5uLZ%2FLlTbtbAOMsB39jXDf8ACV61%2FwA%2Fv%2FkJP8KP%2BEr1r%2Fn9%2FwDISf4Uf8JXrX%2FP7%2F5CT%2FCum8Hate6p9s%2B2zeb5ezb8qrjO7PQewq74v%2F5Fu7%2F4B%2F6GteZ17NRRRRRRWL4v%2FwCRbu%2F%2BAf8Aoa15nXs1eZeL%2FwDkZLv%2FAIB%2F6AtY1FFezV5l4v8A%2BRku%2FwDgH%2FoC1tfD3%2FmIf9s%2F%2FZq2fF%2F%2FACLd3%2FwD%2FwBDWvM67P8A4QH%2FAKiX%2FkD%2FAOyo%2FwCEB%2F6iX%2FkD%2FwCyrF8Q6B%2FYf2f%2FAEnz%2FO3f8s9uMY9z61jUV2f%2FAAgP%2FUS%2F8gf%2FAGVczq9h%2FZepTWfmeb5e359u3OVB6fjVzw9oH9ufaP8ASfI8nb%2Fyz3Zzn3HpW1%2FYP%2FCMf8Tj7T9q%2Bzf8svL2bt3y9cnH3s9O1H%2FCff8AUN%2F8j%2F8A2NH%2FAAn3%2FUN%2F8j%2F%2FAGNdNpF%2F%2Fammw3nl%2BV5m75N27GGI6%2FhV2iiiuY1fxd%2FZepTWf2LzfL2%2FP5u3OVB6bfeuZ8Q6%2FwD259n%2FANG8jyd3%2FLTdnOPYelU9IsP7U1KGz8zyvM3fPt3YwpPT8K6b%2FhAf%2Bol%2F5A%2F%2Byrs68y8X%2FwDIyXf%2FAAD%2FANAWjw9r%2FwDYf2j%2FAEbz%2FO2%2F8tNuMZ9j61d1fxd%2FammzWf2LyvM2%2FP5u7GGB6bfauZr2avMvF%2F8AyMl3%2FwAA%2FwDQFra%2BHv8AzEP%2B2f8A7NWz4v8A%2BRbu%2FwDgH%2Foa15nRRXZ%2FD3%2FmIf8AbP8A9mrZ8X%2F8i3d%2F8A%2F9DWvM69moooooorF8X%2F8AIt3f%2FAP%2FAENa8zr2avMvF%2F8AyMl3%2FwAA%2FwDQFrGoor2avMvF%2FwDyMl3%2FAMA%2F9AWtr4e%2F8xD%2FALZ%2F%2BzVv%2BI7Sa%2B0S5t7ZPMlfbtXIGcMD39hXDf8ACKa1%2FwA%2BX%2FkVP8a7P%2FhK9F%2F5%2Ff8AyE%2F%2BFadndw31slxbP5kT52tgjODjofpXP%2BMdJvdU%2Bx%2FYofN8vfu%2BZVxnbjqfY1zP%2FCKa1%2Fz5f%2BRU%2FwAaP%2BEU1r%2Fny%2F8AIqf412f%2FAAlei%2F8AP7%2F5Cf8AwrhvEd3Dfa3cXFs%2FmRPt2tgjOFA7%2B4roPh7%2FAMxD%2Ftn%2FAOzVv%2BI7Sa%2B0S5t7ZPMlfbtXIGcMD39hXDf8IprX%2FPl%2F5FT%2FABo%2F4RTWv%2BfL%2FwAip%2FjXTaRq1loemw6dqc3kXcO7zI9rNtyxYcqCOhFXf%2BEr0X%2Fn9%2F8AIT%2F4VNZ%2BINMvrlLe2ut8r52r5bDOBnuPQVqVi%2F8ACV6L%2FwA%2Fv%2FkJ%2FwDCuZ1fSb3XNSm1HTIfPtJtuyTeq7sKFPDEHqDWNqGk3ul%2BX9th8rzM7fnVs4xnofcVc8If8jJaf8D%2FAPQGr02sX%2FhK9F%2F5%2Ff8AyE%2F%2BFcN4ju4b7W7i4tn8yJ9u1sEZwoHf3FZlFFezV5l4v%2F5GS7%2F4B%2F6AtbXw9%2F5iH%2FbP%2FwBmrZ8X%2FwDIt3f%2FAAD%2FANDWvM6KK7P4e%2F8AMQ%2F7Z%2F8As1bPi%2F8A5Fu7%2FwCAf%2BhrXmdezUUUUUUVi%2BL%2FAPkW7v8A4B%2F6GteZ17NXmXi%2F%2FkZLv%2FgH%2FoC1jUUV7NXmXi%2F%2FAJGS7%2F4B%2FwCgLW18Pf8AmIf9s%2F8A2auzorxmvTPCH%2FIt2n%2FA%2FwD0Nq2qKK8Zors%2Fh7%2FzEP8Atn%2F7NXZ0UV5l4v8A%2BRku%2FwDgH%2FoC1jVs%2BEP%2BRktP%2BB%2F%2BgNXpteM16Z4Q%2FwCRbtP%2BB%2F8AobVjfEL%2FAJh%2F%2FbT%2FANlrF8If8jJaf8D%2FAPQGr02vGaKKKK9mrzLxf%2FyMl3%2FwD%2F0Ba2vh7%2FzEP%2B2f%2Fs1bPi%2F%2FAJFu7%2F4B%2FwChrXmdFFdn8Pf%2BYh%2F2z%2F8AZq2fF%2F8AyLd3%2FwAA%2FwDQ1rzOvZqKKKKKKxfF%2FwDyLd3%2FAMA%2F9DWvM69mooooorzLxf8A8jJd%2FwDAP%2FQFra%2BHv%2FMQ%2FwC2f%2Fs1bPi%2F%2FkW7v%2FgH%2Foa15nRXpnhD%2FkW7T%2Fgf%2FobVjfEL%2FmH%2FAPbT%2FwBlrjKKK9M8If8AIt2n%2FA%2F%2FAENqxviF%2FwAw%2FwD7af8AstYvhD%2FkZLT%2FAIH%2FAOgNXpteM16Z4Q%2F5Fu0%2F4H%2F6G1bVYvi%2F%2FkW7v%2FgH%2Foa15nXs1FFYvi%2F%2FAJFu7%2F4B%2FwChrXmdFFFFFezV5l4v%2FwCRku%2F%2BAf8AoC1tfD3%2FAJiH%2FbP%2FANmrs6KKKKxfF%2F8AyLd3%2FwAA%2FwDQ1rzOvZqKKKKKKxfF%2FwDyLd3%2FAMA%2F9DWvM62f%2BEr1r%2Fn9%2FwDISf4Uf8JXrX%2FP7%2F5CT%2FCj%2FhK9a%2F5%2Ff%2FISf4Uf8JXrX%2FP7%2FwCQk%2Fwo%2FwCEr1r%2FAJ%2Ff%2FISf4Uf8JXrX%2FP7%2FAOQk%2FwAKzby7mvrl7i5fzJXxubAGcDHb6V1nw9%2F5iH%2FbP%2F2atnxf%2FwAi3d%2F8A%2F8AQ1rzOvTP%2BEU0X%2Fny%2FwDIr%2F41zOr6te6HqU2naZN5FpDt2R7FbblQx5YE9Sau%2BHv%2BKn%2B0f21%2FpX2bb5X8G3dnP3cZ%2B6OvpU3iLw%2FpljolzcW1t5cqbdreYxxlgOhPoa4avTP%2BEU0X%2Fny%2F8iv%2FAI1zOr6te6HqU2naZN5FpDt2R7FbblQx5YE9Sau%2BHv8Aip%2FtH9tf6V9m2%2BV%2FBt3Zz93Gfujr6Vc1fSbLQ9Nm1HTIfIu4dvlybmbblgp4YkdCa5n%2FAISvWv8An9%2F8hJ%2FhXZ%2F8Ipov%2FPl%2F5Ff%2FABrmdX1a90PUptO0ybyLSHbsj2K23KhjywJ6k1s%2BDtWvdU%2B2fbZvN8vZt%2BVVxndnoPYVd8X%2FAPIt3f8AwD%2F0Na8zr2auF8ReINTsdbube2ufLiTbtXy1OMqD3Hqa0%2FB2rXuqfbPts3m%2BXs2%2FKq4zuz0HsKu%2BL%2F8AkW7v%2FgH%2FAKGteZ16Z%2Fwimi%2F8%2BX%2FkV%2F8AGuG8R2kNjrdxb2yeXEm3auScZUHv7mtPwdpNlqn2z7bD5vl7NvzMuM7s9D7CtPxF4f0yx0S5uLa28uVNu1vMY4ywHQn0NcNXs1eZeL%2F%2BRku%2F%2BAf%2BgLVPT9WvdL8z7FN5XmY3fIrZxnHUe5q5%2FwAJXrX%2FAD%2B%2F%2BQk%2Fwo%2F4SvWv%2Bf3%2FAMhJ%2FhR%2Fwletf8%2Fv%2FkJP8KP%2BEr1r%2Fn9%2F8hJ%2FhR%2Fwletf8%2Fv%2FAJCT%2FCobzxBqd9bPb3N1vifG5fLUZwc9h6isyvZqKKKKKKpavYf2pps1n5nleZt%2Bfbuxhgen4VzP%2FCA%2F9RL%2FAMgf%2FZUf8ID%2FANRL%2FwAgf%2FZUf8ID%2FwBRL%2FyB%2FwDZUf8ACA%2F9RL%2FyB%2F8AZUf8ID%2F1Ev8AyB%2F9lR%2FwgP8A1Ev%2FACB%2F9lR%2FwgP%2FAFEv%2FIH%2FANlR%2FwAID%2F1Ev%2FIH%2FwBlWz4e0D%2Bw%2FtH%2Bk%2Bf523%2FlntxjPufWjxf%2FAMi3d%2F8AAP8A0Na8zr2avMvF%2FwDyMl3%2FAMA%2F9AWtr4e%2F8xD%2FALZ%2F%2BzV02r2H9qabNZ%2BZ5Xmbfn27sYYHp%2BFcz%2FwgP%2FUS%2FwDIH%2F2VdnXmXi%2F%2FAJGS7%2F4B%2FwCgLR4e1%2F8AsP7R%2Fo3n%2Bdt%2F5abcYz7H1q7q%2Fi7%2B1NNms%2FsXleZt%2Bfzd2MMD02%2B1czXs1eZeL%2F8AkZLv%2FgH%2FAKAtHh7X%2FwCw%2FtH%2Bjef523%2FlptxjPsfWrur%2BLv7U02az%2BxeV5m35%2FN3YwwPTb7VzNdn%2FAMJ9%2FwBQ3%2FyP%2FwDY0f2D%2FwAJP%2FxOPtP2X7T%2FAMsvL37dvy9cjP3c9O9bPh7QP7D%2B0f6T5%2Fnbf%2BWe3GM%2B59au6vYf2pps1n5nleZt%2Bfbuxhgen4VzP%2FCA%2FwDUS%2F8AIH%2F2VdnXmXi%2F%2FkZLv%2FgH%2FoC1tfD3%2FmIf9s%2F%2FAGaum1ew%2FtTTZrPzPK8zb8%2B3djDA9Pwrmf8AhAf%2Bol%2F5A%2F8Asq7OuY1fwj%2FampTXn23yvM2%2FJ5W7GFA67vaqf%2FCA%2FwDUS%2F8AIH%2F2VH%2FCA%2F8AUS%2F8gf8A2VH%2FAAgP%2FUS%2F8gf%2FAGVH%2FCA%2F9RL%2FAMgf%2FZUf8ID%2FANRL%2FwAgf%2FZUf8ID%2FwBRL%2FyB%2FwDZUf8ACA%2F9RL%2FyB%2F8AZUf8ID%2F1Ev8AyB%2F9lXZ0UUUUUUUVi%2F8ACV6L%2FwA%2Fv%2FkJ%2FwDCtOzu4b62S4tn8yJ87WwRnBx0P0qHUNWstL8v7bN5XmZ2%2FIzZxjPQe4qCz8QaZfXKW9tdb5XztXy2GcDPcegrUrF%2F4SvRf%2Bf3%2FwAhP%2FhR%2FwAJXov%2FAD%2B%2F%2BQn%2FAMKP%2BEr0X%2Fn9%2FwDIT%2F4VmeIvEGmX2iXNvbXPmSvt2r5bDOGB6kegrhq9mrzLxf8A8jJd%2FwDAP%2FQFq74O1ay0v7Z9tm8rzNm35WbON2eg9xXTf8JXov8Az%2B%2F%2BQn%2Fwo%2F4SvRf%2Bf3%2FyE%2F8AhW1XC%2BIvD%2Bp32t3NxbW3mRPt2t5ijOFA7n1FZn%2FCKa1%2Fz5f%2BRU%2Fxo%2F4RTWv%2BfL%2FyKn%2BNH%2FCKa1%2Fz5f8AkVP8a9NrzLxf%2FwAjJd%2F8A%2F8AQFqnp%2Bk3uqeZ9ih83y8bvnVcZzjqfY1c%2FwCEU1r%2FAJ8v%2FIqf40f8IprX%2FPl%2F5FT%2FABrGr0zwh%2FyLdp%2FwP%2F0Nqu6hq1lpfl%2FbZvK8zO35GbOMZ6D3FUv%2BEr0X%2Fn9%2F8hP%2FAIUf8JXov%2FP7%2FwCQn%2FwrarhfEXh%2FU77W7m4trbzIn27W8xRnCgdz6ip%2FD3%2FFMfaP7a%2F0X7Tt8r%2BPdtzn7ucfeHX1rZ%2F4SvRf%2Bf3%2FAMhP%2FhR%2Fwlei%2FwDP7%2F5Cf%2FCj%2FhK9F%2F5%2Ff%2FIT%2FwCFH%2FCV6L%2Fz%2B%2F8AkJ%2F8KP8AhK9F%2FwCf3%2FyE%2FwDhU1n4g0y%2BuUt7a63yvnavlsM4Ge49BWpWL%2Fwlei%2F8%2Fv8A5Cf%2FAAo%2F4SvRf%2Bf3%2FwAhP%2FhV3T9WstU8z7FN5vl43fIy4znHUexqa8u4bG2e4uX8uJMbmwTjJx0H1rM%2F4SvRf%2Bf3%2FwAhP%2FhW1RRRRRRRRXjNemeEP%2BRbtP8Agf8A6G1Y3xC%2F5h%2F%2FAG0%2F9lrF8If8jJaf8D%2F9AavTa8Zoooor2avMvF%2F%2FACMl3%2FwD%2FwBAWsaiivZqKKKKK8y8X%2F8AIyXf%2FAP%2FAEBa2vh7%2FwAxD%2Ftn%2FwCzV2dFeM16Z4Q%2F5Fu0%2FwCB%2FwDobVjfEL%2FmH%2F8AbT%2F2WuMor2aiuM%2BIX%2FMP%2FwC2n%2FstcZRRRRWz4Q%2F5GS0%2F4H%2F6A1em14zRXZ%2FD3%2FmIf9s%2F%2FZq2fF%2F%2FACLd3%2FwD%2FwBDWvM69moooooorF8X%2FwDIt3f%2FAAD%2FANDWvM69mrzLxf8A8jJd%2FwDAP%2FQFrGooor0zwh%2FyLdp%2FwP8A9Dasb4hf8w%2F%2FALaf%2By1i%2BEP%2BRktP%2BB%2F%2BgNXpteM16Z4Q%2FwCRbtP%2BB%2F8AobVtUUUV5l4v%2FwCRku%2F%2BAf8AoC1jVs%2BEP%2BRktP8Agf8A6A1em14zXpnhD%2FkW7T%2Fgf%2FobVjfEL%2FmH%2FwDbT%2F2WsXwh%2FwAjJaf8D%2F8AQGr02iiisXxf%2FwAi3d%2F8A%2F8AQ1rzOiiiiivZqK4z4hf8w%2F8A7af%2By1i%2BEP8AkZLT%2Fgf%2FAKA1em0V5l4v%2FwCRku%2F%2BAf8AoC1tfD3%2FAJiH%2FbP%2FANmrZ8X%2FAPIt3f8AwD%2F0Na8zr2aiiiiiisXxf%2FyLd3%2FwD%2F0Na8zrZ%2F4SvWv%2Bf3%2FyEn%2BFdNpGk2WuabDqOpw%2BfdzbvMk3Mu7DFRwpA6AVd%2F4RTRf%2BfL%2FyK%2F8AjWZ4i8P6ZY6Jc3FtbeXKm3a3mMcZYDoT6GuGorTs%2FEGp2NslvbXWyJM7V8tTjJz3Hqah1DVr3VPL%2B2zeb5edvyKuM4z0HsKueEP%2BRktP%2BB%2F%2BgNXpteM16Z4Q%2FwCRbtP%2BB%2F8AobVtVl%2BI7uax0S5uLZ%2FLlTbtbAOMsB39jXDf8JXrX%2FP7%2FwCQk%2Fwr02vMvF%2F%2FACMl3%2FwD%2FwBAWsatnwh%2FyMlp%2FwAD%2FwDQGr02sX%2FhFNF%2F58v%2FACK%2F%2BNadnaQ2NslvbJ5cSZ2rknGTnqfrXJ%2FEL%2FmH%2FwDbT%2F2WuTs7uaxuUuLZ%2FLlTO1sA4yMd%2FrWl%2FwAJXrX%2FAD%2B%2F%2BQk%2Fwr02iioLy0hvrZ7e5TzInxuXJGcHPUfSsz%2FhFNF%2F58v%2FACK%2F%2BNH%2FAAimi%2F8APl%2F5Ff8Axo%2F4RTRf%2BfL%2FAMiv%2FjXM%2BMdJstL%2Bx%2FYofK8zfu%2BZmzjbjqfc1meHLSG%2B1u3t7lPMifduXJGcKT29xXc%2F8Ipov%2FPl%2FwCRX%2FxrarhfEXiDU7HW7m3trny4k27V8tTjKg9x6mp%2FD3%2FFT%2FaP7a%2F0r7Nt8r%2BDbuzn7uM%2FdHX0q5q%2Bk2Wh6bNqOmQ%2BRdw7fLk3M23LBTwxI6E1zP8Awletf8%2Fv%2FkJP8K9NrzLxf%2FyMl3%2FwD%2F0Bap6fq17pfmfYpvK8zG75FbOM46j3NTXniDU762e3ubrfE%2BNy%2BWozg57D1FZlezUUUUUUVi%2BL%2FwDkW7v%2FAIB%2F6GteZ12f%2FCA%2F9RL%2FAMgf%2FZV02kWH9l6bDZ%2BZ5vl7vn27c5Ynp%2BNUvEOv%2FwBh%2FZ%2F9G8%2Fzt3%2FLTbjGPY%2Btczq%2Fi7%2B1NNms%2FsXleZt%2Bfzd2MMD02%2B1czRXTaR4R%2FtTTYbz7b5Xmbvk8rdjDEdd3tVLxDoH9h%2FZ%2F9J8%2Fzt3%2FACz24xj3PrVPSL%2F%2By9ShvPL83y93ybtucqR1%2FGum%2FwCE%2B%2F6hv%2Fkf%2FwCxrjK6bSPF39l6bDZ%2FYvN8vd8%2Fm7c5Ynpt96u%2F8J9%2F1Df%2FACP%2FAPY1S1fxd%2FammzWf2LyvM2%2FP5u7GGB6bfauZrs%2F%2BE%2B%2F6hv8A5H%2F%2BxrmdXv8A%2B1NSmvPL8rzNvybt2MKB1%2FCrnh7QP7c%2B0f6T5Hk7f%2BWe7Oc%2B49K2v7B%2F4Rj%2FAInH2n7V9m%2F5ZeXs3bvl65OPvZ6dqP8AhPv%2Bob%2F5H%2F8AsaP%2BE%2B%2F6hv8A5H%2F%2BxrptIv8A%2B1NNhvPL8rzN3ybt2MMR1%2FCqXiHQP7c%2Bz%2F6T5Hk7v%2BWe7Oce49Kxv%2BEB%2FwCol%2F5A%2FwDsqP8AhAf%2Bol%2F5A%2F8AsqP%2BE%2B%2F6hv8A5H%2F%2BxrptIv8A%2B1NNhvPL8rzN3ybt2MMR1%2FCqXiHX%2FwCw%2Fs%2F%2Bjef527%2FlptxjHsfWqWkeLv7U1KGz%2BxeV5m75%2FN3YwpPTb7V09cZ%2Fwn3%2FAFDf%2FI%2F%2FANjXTaRf%2FwBqabDeeX5Xmbvk3bsYYjr%2BFUvEOgf259n%2FANJ8jyd3%2FLPdnOPcelY39g%2F8Ix%2FxOPtP2r7N%2FwAsvL2bt3y9cnH3s9O1H%2FCff9Q3%2FwAj%2FwD2NdnXMav4R%2FtTUprz7b5Xmbfk8rdjCgdd3tVP%2FkR%2F%2Bn77Z%2F2z2bPzznd%2BlUtX8Xf2pps1n9i8rzNvz%2Bbuxhgem32rma9mrzLxf%2FyMl3%2FwD%2F0BaPD2gf259o%2F0nyPJ2%2F8ALPdnOfcelbX%2FAAgP%2FUS%2F8gf%2FAGVH%2FCA%2F9RL%2FAMgf%2FZV2dFFFFFFZfiO0mvtEube2TzJX27VyBnDA9%2FYVw3%2FCKa1%2Fz5f%2BRU%2Fxr02iuM%2BIX%2FMP%2FwC2n%2FstcnZ2k19cpb2yeZK%2Bdq5AzgZ7%2FStL%2FhFNa%2F58v%2FIqf40f8IprX%2FPl%2FwCRU%2FxrptI1ay0PTYdO1ObyLuHd5ke1m25YsOVBHQisbxjq1lqn2P7FN5vl793ysuM7cdR7GuZorZ%2F4RTWv%2BfL%2FAMip%2FjWbeWk1jcvb3KeXKmNy5BxkZ7fWoKns7Sa%2BuUt7ZPMlfO1cgZwM9%2FpWl%2Fwimtf8%2BX%2FkVP8AGsatOz8P6nfWyXFta74nztbzFGcHHc%2BorrPB2k3ul%2FbPtsPleZs2%2FMrZxuz0PuK0%2FEdpNfaJc29snmSvt2rkDOGB7%2Bwrhv8AhFNa%2FwCfL%2FyKn%2BNY1emeEP8AkW7T%2Fgf%2FAKG1XdQ1ay0vy%2Fts3leZnb8jNnGM9B7ioLPxBpl9cpb211vlfO1fLYZwM9x6CtSvMv8AhFNa%2FwCfL%2FyKn%2BNdz4ctJrHRLa3uU8uVN25cg4yxPb2NZnjHSb3VPsf2KHzfL37vmVcZ246n2NY2kaTe6HqUOo6nD5FpDu3yb1bblSo4Uk9SK6b%2FAISvRf8An9%2F8hP8A4V5nXpnhD%2FkW7T%2Fgf%2FobVd1DVrLS%2FL%2B2zeV5mdvyM2cYz0HuKxdX1ay1zTZtO0ybz7ubb5ce1l3YYMeWAHQGuZ%2F4RTWv%2BfL%2FAMip%2FjXptZd54g0yxuXt7m62SpjcvlscZGew9DWB4h%2F4qf7P%2FYv%2BlfZt3m%2Fwbd2Mfexn7p6elYv%2FAAimtf8APl%2F5FT%2FGj%2FhFNa%2F58v8AyKn%2BNem15l4v%2FwCRku%2F%2BAf8AoC1tfD3%2FAJiH%2FbP%2FANmrs6KKKKKKKKKKKK4z4hf8w%2F8A7af%2By1i%2BEP8AkZLT%2Fgf%2FAKA1em0V5l4v%2FwCRku%2F%2BAf8AoC1jUUV7NXmXi%2F8A5GS7%2FwCAf%2BgLWNWz4Q%2F5GS0%2F4H%2F6A1em14zXpnhD%2FkW7T%2Fgf%2FobVtUUV4zXpnhD%2FAJFu0%2F4H%2FwChtWN8Qv8AmH%2F9tP8A2WsXwh%2FyMlp%2FwP8A9AavTaKKKxfF%2FwDyLd3%2FAMA%2F9DWvM6K9M8If8i3af8D%2FAPQ2rG%2BIX%2FMP%2FwC2n%2FstYvhD%2FkZLT%2Fgf%2FoDV6bRXmXi%2F%2FkZLv%2FgH%2FoC1tfD3%2FmIf9s%2F%2FAGauzoorzLxf%2FwAjJd%2F8A%2F8AQFra%2BHv%2FADEP%2B2f%2FALNXZ0UUUUUUUVi%2BL%2F8AkW7v%2FgH%2FAKGteZ0V6Z4Q%2FwCRbtP%2BB%2F8AobVtUUUUUUUV4zXpnhD%2FAJFu0%2F4H%2FwChtW1RRXjNFFFFezV5l4v%2FAORku%2F8AgH%2FoC1tfD3%2FmIf8AbP8A9mrZ8X%2F8i3d%2F8A%2F9DWvM69mrzLxf%2FwAjJd%2F8A%2F8AQFra%2BHv%2FADEP%2B2f%2FALNWz4v%2FAORbu%2F8AgH%2Foa15nRXpnhD%2FkW7T%2FAIH%2FAOhtW1WL4v8A%2BRbu%2FwDgH%2Foa15nXs1eZeL%2F%2BRku%2F%2BAf%2BgLWNWz4Q%2FwCRktP%2BB%2F8AoDV6bXjNemeEP%2BRbtP8Agf8A6G1bVYvi%2FwD5Fu7%2FAOAf%2BhrXmdezUUUUUUVBeWkN9bPb3KeZE%2BNy5Izg56j6Vmf8Ipov%2FPl%2F5Ff%2FABrzOtOz8QanY2yW9tdbIkztXy1OMnPceprrPB2rXuqfbPts3m%2BXs2%2FKq4zuz0HsK6eivMv%2BEr1r%2Fn9%2F8hJ%2FhR%2Fwletf8%2Fv%2FAJCT%2FCum8Hate6p9s%2B2zeb5ezb8qrjO7PQewrT8R3c1jolzcWz%2BXKm3a2AcZYDv7GuG%2F4SvWv%2Bf3%2FwAhJ%2FhXZ%2F8ACKaL%2FwA%2BX%2FkV%2FwDGtOztIbG2S3tk8uJM7VyTjJz1P1qesvxHdzWOiXNxbP5cqbdrYBxlgO%2Fsa4b%2FAISvWv8An9%2F8hJ%2FhXZ%2F8Ipov%2FPl%2F5Ff%2FABrhvEdpDY63cW9snlxJt2rknGVB7%2B5rMrT8OWkN9rdvb3KeZE%2B7cuSM4Unt7iu5%2FwCEU0X%2FAJ8v%2FIr%2FAONcZ%2Fwletf8%2Fv8A5CT%2FAArNvLua%2BuXuLl%2FMlfG5sAZwMdvpXWfD3%2FmIf9s%2F%2FZq6y8tIb62e3uU8yJ8blyRnBz1H0rM%2F4RTRf%2BfL%2FwAiv%2FjXGf8ACV61%2FwA%2Fv%2FkJP8K6bSNJstc02HUdTh8%2B7m3eZJuZd2GKjhSB0Aqn4h%2F4pj7P%2FYv%2Bi%2Fad3m%2Fx7tuMfezj7x6etc%2FeeINTvrZ7e5ut8T43L5ajODnsPUVmUVp2fiDU7G2S3trrZEmdq%2BWpxk57j1NdZ4O1a91T7Z9tm83y9m35VXGd2eg9hV3xf%2FyLd3%2FwD%2F0Na8zr2asu88P6ZfXL3Fza75XxubzGGcDHY%2BgqH%2FhFNF%2F58v8AyK%2F%2BNUtX0my0PTZtR0yHyLuHb5cm5m25YKeGJHQmuZ%2F4SvWv%2Bf3%2FAMhJ%2FhXZ%2FwDCKaL%2FAM%2BX%2FkV%2F8a5nV9WvdD1KbTtMm8i0h27I9ittyoY8sCepNbPg7Vr3VPtn22bzfL2bflVcZ3Z6D2FXfF%2F%2FACLd3%2FwD%2FwBDWvM69moooooooorjP%2BEB%2FwCol%2F5A%2FwDsq5nV7D%2By9Sms%2FM83y9vz7ducqD0%2FGrnh7X%2F7D%2B0f6N5%2Fnbf%2BWm3GM%2Bx9a2v%2BE%2B%2F6hv8A5H%2F%2Bxo%2F4T7%2FqG%2F8Akf8A%2Bxo%2F4QH%2FAKiX%2FkD%2FAOyo%2FwCEB%2F6iX%2FkD%2FwCyrZ8PaB%2FYf2j%2FAEnz%2FO2%2F8s9uMZ9z61d1ew%2FtTTZrPzPK8zb8%2B3djDA9Pwrmf%2BEB%2F6iX%2FAJA%2F%2Byo%2F4T7%2FAKhv%2Fkf%2FAOxrptIv%2FwC1NNhvPL8rzN3ybt2MMR1%2FCqXiHX%2F7D%2Bz%2FAOjef527%2FlptxjHsfWsb%2B3v%2BEn%2F4k%2F2b7L9p%2FwCWvmb9u35umBn7uOvej%2FhAf%2Bol%2FwCQP%2Fsq7OvMvF%2F%2FACMl3%2FwD%2FwBAWsatnwh%2FyMlp%2FwAD%2FwDQGr02vGaK7P4e%2FwDMQ%2F7Z%2FwDs1dnRXGf8ID%2F1Ev8AyB%2F9lXTaRYf2XpsNn5nm%2BXu%2Bfbtzlien41zPxC%2F5h%2F8A20%2F9lrmdIsP7U1KGz8zyvM3fPt3YwpPT8K6b%2FhAf%2Bol%2F5A%2F%2ByrjKK7P4e%2F8AMQ%2F7Z%2F8As1dNq9h%2FammzWfmeV5m359u7GGB6fhXM%2FwDCA%2F8AUS%2F8gf8A2VdnXMav4u%2FsvUprP7F5vl7fn83bnKg9NvvVP%2FhPv%2Bob%2FwCR%2FwD7Gj%2B3v%2BEn%2FwCJP9m%2By%2Faf%2BWvmb9u35umBn7uOvej%2FAIQH%2FqJf%2BQP%2FALKuzrmNX8I%2F2pqU159t8rzNvyeVuxhQOu72q74e0D%2Bw%2FtH%2Bk%2Bf523%2FlntxjPufWrur2H9qabNZ%2BZ5Xmbfn27sYYHp%2BFcz%2FwgP8A1Ev%2FACB%2F9lXZ0UUUUUVBeXcNjbPcXL%2BXEmNzYJxk46D61mf8JXov%2FP7%2FAOQn%2FwAK2q4XxF4f1O%2B1u5uLa28yJ9u1vMUZwoHc%2BorM%2FwCEU1r%2FAJ8v%2FIqf41DeeH9TsbZ7i5tdkSY3N5inGTjsfU1mV7NWXeeINMsbl7e5utkqY3L5bHGRnsPQ1D%2Fwlei%2F8%2Fv%2FAJCf%2FCprPxBpl9cpb211vlfO1fLYZwM9x6CtSvGa7nw74g0yx0S2t7m58uVN25fLY4yxPUD0NZnjHVrLVPsf2KbzfL37vlZcZ246j2NZnhy7hsdbt7i5fy4k3bmwTjKkdvc13P8Awlei%2FwDP7%2F5Cf%2FCj%2FhK9F%2F5%2Ff%2FIT%2FwCFczq%2Bk3uualNqOmQ%2BfaTbdkm9V3YUKeGIPUGqX%2FCKa1%2Fz5f8AkVP8a0%2FDvh%2FU7HW7a4ubby4k3bm8xTjKkdj6mu6rxmium8HatZaX9s%2B2zeV5mzb8rNnG7PQe4rpv%2BEr0X%2Fn9%2FwDIT%2F4Uf8JXov8Az%2B%2F%2BQn%2FwrarLvPEGmWNy9vc3WyVMbl8tjjIz2Hoa5Pxjq1lqn2P7FN5vl793ysuM7cdR7Gszw5dw2Ot29xcv5cSbtzYJxlSO3ua7n%2FhK9F%2F5%2Ff8AyE%2F%2BFcZ%2Fwimtf8%2BX%2FkVP8azby0msbl7e5Ty5UxuXIOMjPb611nw9%2FwCYh%2F2z%2FwDZq6y8u4bG2e4uX8uJMbmwTjJx0H1rM%2F4SvRf%2Bf3%2FyE%2F8AhR%2Fwlei%2F8%2Fv%2FAJCf%2FCuG8R3cN9rdxcWz%2BZE%2B3a2CM4UDv7isytnwh%2FyMlp%2FwP%2F0Bq9NrF%2F4SvRf%2Bf3%2FyE%2F8AhR%2Fwlei%2F8%2Fv%2FAJCf%2FCrun6tZap5n2KbzfLxu%2BRlxnOOo9jU15dw2Ns9xcv5cSY3NgnGTjoPrWZ%2Fwlei%2F8%2Fv%2FAJCf%2FCtqiiiiiisXxf8A8i3d%2FwDAP%2FQ1rzOvZqKKxfF%2F%2FIt3f%2FAP%2FQ1rzOvZq8y8X%2F8AIyXf%2FAP%2FAEBaxq2fCH%2FIyWn%2FAAP%2FANAavTa8Zooooor0zwh%2FyLdp%2FwAD%2FwDQ2raoorxmiiiivZq8y8X%2FAPIyXf8AwD%2F0BaxqKK9mrzLxf%2FyMl3%2FwD%2F0Ba2vh7%2FzEP%2B2f%2Fs1bPi%2F%2FAJFu7%2F4B%2FwChrXmdFFFbPhD%2FAJGS0%2F4H%2FwCgNXpteM0V2fw9%2FwCYh%2F2z%2FwDZq2fF%2FwDyLd3%2FAMA%2F9DWvM69moooooorF8X%2F8i3d%2F8A%2F9DWvM6KKKKKK9M8If8i3af8D%2FAPQ2rarF8X%2F8i3d%2F8A%2F9DWvM6KK7P4e%2F8xD%2FALZ%2F%2BzV2dFeM16Z4Q%2F5Fu0%2F4H%2F6G1bVFFeM0UVs%2BEP8AkZLT%2Fgf%2FAKA1em0UUVi%2BL%2F8AkW7v%2FgH%2FAKGteZ0V6Z4Q%2FwCRbtP%2BB%2F8AobVtVi%2BL%2FwDkW7v%2FAIB%2F6GteZ17NXmXi%2FwD5GS7%2FAOAf%2BgLW18Pf%2BYh%2F2z%2F9mrZ8X%2F8AIt3f%2FAP%2FAENa8zor0zwh%2FwAi3af8D%2F8AQ2rarF8X%2FwDIt3f%2FAAD%2FANDWvM69mooooooqC8tIb62e3uU8yJ8blyRnBz1H0rM%2F4RTRf%2BfL%2FwAiv%2FjXmddz4d8P6ZfaJbXFzbeZK%2B7c3mMM4YjoD6CtP%2FhFNF%2F58v8AyK%2F%2BNH%2FCKaL%2FAM%2BX%2FkV%2F8aP%2BEU0X%2Fny%2F8iv%2FAI0f8Ipov%2FPl%2FwCRX%2FxrmdX1a90PUptO0ybyLSHbsj2K23KhjywJ6k1S%2FwCEr1r%2FAJ%2Ff%2FISf4Vd0jVr3XNSh07U5vPtJt2%2BPYq7sKWHKgHqBXTf8Ipov%2FPl%2F5Ff%2FABo%2F4RTRf%2BfL%2FwAiv%2FjXDeI7SGx1u4t7ZPLiTbtXJOMqD39zUOn6te6X5n2KbyvMxu%2BRWzjOOo9zW%2F4d8Qanfa3bW9zc%2BZE%2B7cvlqM4UnsPUV3VYv%2FCKaL%2Fz5f8AkV%2F8a5nV9WvdD1KbTtMm8i0h27I9ittyoY8sCepNbPg7Vr3VPtn22bzfL2bflVcZ3Z6D2FafiO7msdEubi2fy5U27WwDjLAd%2FY1w3%2FCV61%2Fz%2B%2F8AkJP8Kxq7nw74f0y%2B0S2uLm28yV925vMYZwxHQH0Faf8Awimi%2FwDPl%2F5Ff%2FGqWr6TZaHps2o6ZD5F3Dt8uTczbcsFPDEjoTXM%2FwDCV61%2Fz%2B%2F%2BQk%2Fwo%2F4SvWv%2Bf3%2FyEn%2BFdz4cu5r7RLa4uX8yV925sAZwxHb2FZnjHVr3S%2Fsf2KbyvM37vlVs4246j3NcneeINTvrZ7e5ut8T43L5ajODnsPUVmUV6Z4Q%2FwCRbtP%2BB%2F8AobVtVBeWkN9bPb3KeZE%2BNy5Izg56j6Vmf8Ipov8Az5f%2BRX%2FxrjP%2BEr1r%2Fn9%2F8hJ%2FhWbeXc19cvcXL%2BZK%2BNzYAzgY7fSptP1a90vzPsU3leZjd8itnGcdR7mtnSNWvdc1KHTtTm8%2B0m3b49iruwpYcqAeoFdN%2FwAIpov%2FAD5f%2BRX%2FAMa8zrTs%2FEGp2NslvbXWyJM7V8tTjJz3Hqam%2FwCEr1r%2FAJ%2Ff%2FISf4VDeeINTvrZ7e5ut8T43L5ajODnsPUVmV7NRRRRRRRRXGf8ACA%2F9RL%2FyB%2F8AZV02kWH9l6bDZ%2BZ5vl7vn27c5Ynp%2BNXapavf%2FwBl6bNeeX5vl7fk3bc5YDr%2BNcz%2FAMJ9%2FwBQ3%2FyP%2FwDY12dcxq%2FhH%2B1NSmvPtvleZt%2BTyt2MKB13e1U%2F%2BEB%2F6iX%2FAJA%2F%2Byq5pHhH%2By9ShvPtvm%2BXu%2BTytucqR13e9dPRXmXi%2FwD5GS7%2FAOAf%2BgLR4e0D%2B3PtH%2Bk%2BR5O3%2FlnuznPuPSum0jwj%2FZepQ3n23zfL3fJ5W3OVI67veunrjP8AhPv%2Bob%2F5H%2F8Asa5nV7%2F%2B1NSmvPL8rzNvybt2MKB1%2FCrnh7X%2FAOw%2FtH%2Bjef523%2FlptxjPsfWrur%2BLv7U02az%2BxeV5m35%2FN3YwwPTb7VzNdn%2FwgP8A1Ev%2FACB%2F9lXTaRYf2XpsNn5nm%2BXu%2Bfbtzlien41dqlq9h%2FammzWfmeV5m359u7GGB6fhXM%2F8ID%2F1Ev8AyB%2F9lXGV02keLv7L02Gz%2Bxeb5e75%2FN25yxPTb71d%2FwCR4%2F6cfsf%2FAG037%2Fyxjb%2BtUtX8I%2F2Xps159t83y9vyeVtzlgOu73rma7P%2FAIQH%2FqJf%2BQP%2FALKj%2B3v%2BEY%2F4k%2F2b7V9m%2FwCWvmbN275umDj72Ovatnw9r%2F8Abn2j%2FRvI8nb%2FAMtN2c59h6VtUVxn%2FCA%2F9RL%2FAMgf%2FZUf8ID%2FANRL%2FwAgf%2FZUf8ID%2FwBRL%2FyB%2FwDZVc0jwj%2FZepQ3n23zfL3fJ5W3OVI67veunrxmitnw9oH9ufaP9J8jydv%2FACz3Zzn3HpW1%2FwAID%2F1Ev%2FIH%2FwBlR%2FwgP%2FUS%2FwDIH%2F2VdnRRRRRRRRWL%2FwAJXov%2FAD%2B%2F%2BQn%2FAMK07O7hvrZLi2fzInztbBGcHHQ%2FSp6xfF%2F%2FACLd3%2FwD%2FwBDWvM69M%2F4SvRf%2Bf3%2FAMhP%2FhR%2Fwlei%2FwDP7%2F5Cf%2FCj%2FhK9F%2F5%2Ff%2FIT%2FwCFH%2FCV6L%2Fz%2B%2F8AkJ%2F8KP8AhK9F%2FwCf3%2FyE%2FwDhW1XC%2BIvD%2Bp32t3NxbW3mRPt2t5ijOFA7n1Fafg7Sb3S%2Ftn22HyvM2bfmVs43Z6H3FdBeXcNjbPcXL%2BXEmNzYJxk46D61mf8ACV6L%2FwA%2Fv%2FkJ%2FwDCuM%2F4RTWv%2BfL%2FAMip%2FjWbeWk1jcvb3KeXKmNy5BxkZ7fWptP0m91TzPsUPm%2BXjd86rjOcdT7Gprzw%2FqdjbPcXNrsiTG5vMU4ycdj6msyvTP8AhK9F%2FwCf3%2FyE%2FwDhR%2Fwlei%2F8%2Fv8A5Cf%2FAAq7p%2BrWWqeZ9im83y8bvkZcZzjqPY1dorxmiuz%2BHv8AzEP%2B2f8A7NW%2F4jtJr7RLm3tk8yV9u1cgZwwPf2FcN%2Fwimtf8%2BX%2FkVP8AGuz%2FAOEr0X%2Fn9%2F8AIT%2F4Vw3iO7hvtbuLi2fzIn27WwRnCgd%2FcVp%2BDtWstL%2B2fbZvK8zZt%2BVmzjdnoPcV03%2FCV6L%2FAM%2Fv%2FkJ%2F8KP%2BEr0X%2Fn9%2F8hP%2FAIVtVl3niDTLG5e3ubrZKmNy%2BWxxkZ7D0NQ%2F8JXov%2FP7%2FwCQn%2Fwo%2FwCEr0X%2FAJ%2Ff%2FIT%2FAOFH%2FCV6L%2Fz%2B%2FwDkJ%2F8ACuM%2F4RTWv%2BfL%2FwAip%2FjR%2FwAIprX%2FAD5f%2BRU%2FxrpvB2k3ul%2FbPtsPleZs2%2FMrZxuz0PuK6eiiiiiiiiiivGa9M8If8i3af8D%2FAPQ2rarF8X%2F8i3d%2F8A%2F9DWvM6KKKKK9moorF8X%2F8i3d%2F8A%2F9DWvM69mrzLxf%2FwAjJd%2F8A%2F8AQFra%2BHv%2FADEP%2B2f%2FALNWz4v%2FAORbu%2F8AgH%2Foa15nRRXZ%2FD3%2FAJiH%2FbP%2FANmrs6K8Zors%2Fh7%2FAMxD%2Ftn%2FAOzV2dFeM0UUUV7NXmXi%2FwD5GS7%2FAOAf%2BgLWNRRXs1FFFFFFFFFFFYvi%2FwD5Fu7%2FAOAf%2BhrXmdFemeEP%2BRbtP%2BB%2F%2BhtW1WL4v%2F5Fu7%2F4B%2F6GteZ0V6Z4Q%2F5Fu0%2F4H%2F6G1Y3xC%2F5h%2FwD20%2F8AZa4yivZq8y8X%2FwDIyXf%2FAAD%2FANAWsatnwh%2FyMlp%2FwP8A9AavTa8Zr0zwh%2FyLdp%2FwP%2F0Nq2qxfF%2F%2FACLd3%2FwD%2FwBDWvM6K9M8If8AIt2n%2FA%2F%2FAENqxviF%2FwAw%2FwD7af8AstYvhD%2FkZLT%2FAIH%2FAOgNXptFFFYvi%2F8A5Fu7%2FwCAf%2BhrXmdezUUUUUUUUUV4zRRWz4Q%2F5GS0%2FwCB%2FwDoDV6bRRRRRRRUF5aQ31s9vcp5kT43LkjODnqPpWZ%2Fwimi%2FwDPl%2F5Ff%2FGj%2FhFNF%2F58v%2FIr%2FwCNczq%2BrXuh6lNp2mTeRaQ7dkexW25UMeWBPUmqX%2FCV61%2Fz%2B%2F8AkJP8KhvPEGp31s9vc3W%2BJ8bl8tRnBz2HqKzK9M%2F4RTRf%2BfL%2FAMiv%2FjXM6vq17oepTadpk3kWkO3ZHsVtuVDHlgT1JrG1DVr3VPL%2B2zeb5edvyKuM4z0HsKpUV7NWXeeH9Mvrl7i5td8r43N5jDOBjsfQVyfjHSbLS%2Fsf2KHyvM37vmZs4246n3NUvCH%2FACMlp%2FwP%2FwBAavTa8ZrTs%2FEGp2NslvbXWyJM7V8tTjJz3Hqa6zwdq17qn2z7bN5vl7NvyquM7s9B7Crvi%2F8A5Fu7%2FwCAf%2BhrXmdFemeEP%2BRbtP8Agf8A6G1XdQ0my1Ty%2FtsPm%2BXnb87LjOM9D7CoLPw%2FpljcpcW1rslTO1vMY4yMdz6GtSvMv%2BEr1r%2Fn9%2F8AISf4Uf8ACV61%2FwA%2Fv%2FkJP8K6bwdq17qn2z7bN5vl7NvyquM7s9B7CugvLSG%2Btnt7lPMifG5ckZwc9R9KzP8AhFNF%2FwCfL%2FyK%2FwDjW1RRWX4ju5rHRLm4tn8uVNu1sA4ywHf2NcN%2Fwletf8%2Fv%2FkJP8KP%2BEr1r%2Fn9%2F8hJ%2FhXc%2BHLua%2B0S2uLl%2FMlfdubAGcMR29hWZ4x1a90v7H9im8rzN%2B75VbONuOo9zXM%2F8JXrX%2FP7%2FAOQk%2FwAKP%2BEr1r%2Fn9%2F8AISf4V2f%2FAAimi%2F8APl%2F5Ff8Axo%2F4RTRf%2BfL%2FAMiv%2FjR%2Fwimi%2FwDPl%2F5Ff%2FGqWr6TZaHps2o6ZD5F3Dt8uTczbcsFPDEjoTXM%2FwDCV61%2Fz%2B%2F%2BQk%2Fwr02iiiiiiiiuM%2F4T7%2FqG%2FwDkf%2F7GuZ1e%2FwD7U1Ka88vyvM2%2FJu3YwoHX8KueHtA%2Ftz7R%2FpPkeTt%2F5Z7s5z7j0q7q%2FhH%2By9NmvPtvm%2BXt%2BTytucsB13e9czXs1cxq%2FhH%2B1NSmvPtvleZt%2BTyt2MKB13e1U%2F8AhAf%2Bol%2F5A%2F8AsqP%2BEB%2F6iX%2FkD%2F7Kj%2FhAf%2Bol%2FwCQP%2Fsq7OuY1fxd%2FZepTWf2LzfL2%2FP5u3OVB6bfeqf%2FACPH%2FTj9j%2F7ab9%2F5Yxt%2FWrmkeEf7L1KG8%2B2%2Bb5e75PK25ypHXd7109eM0V2fw9%2F5iH%2FbP%2F2aum1ew%2FtTTZrPzPK8zb8%2B3djDA9Pwrmf%2BEB%2F6iX%2FkD%2F7Kj%2FhAf%2Bol%2FwCQP%2Fsq6bSLD%2By9Nhs%2FM83y93z7ducsT0%2FGrtUtXv8A%2By9NmvPL83y9vybtucsB1%2FGuZ%2F4T7%2FqG%2FwDkf%2F7GuMors%2Fh7%2FwAxD%2Ftn%2FwCzV2dFFcxq%2Fi7%2By9Sms%2FsXm%2BXt%2BfzducqD02%2B9XfD2v%2F259o%2F0byPJ2%2F8ALTdnOfYelHi%2F%2FkW7v%2FgH%2Foa15nXZ%2FwDCA%2F8AUS%2F8gf8A2VH9vf8ACMf8Sf7N9q%2Bzf8tfM2bt3zdMHH3sde1H%2FI8f9OP2P%2Ftpv3%2FljG39apav4R%2FsvTZrz7b5vl7fk8rbnLAdd3vXM17NRWL4h1%2F%2Bw%2Fs%2F%2Bjef527%2FAJabcYx7H1rmdX8Xf2pps1n9i8rzNvz%2Bbuxhgem32rma9mooooooqC8u4bG2e4uX8uJMbmwTjJx0H1rM%2FwCEr0X%2FAJ%2Ff%2FIT%2FAOFeZ1p2fh%2FU762S4trXfE%2BdreYozg47n1FdB4e%2F4pj7R%2FbX%2Bi%2Fadvlfx7tuc%2Fdzj7w6%2BtTeIvEGmX2iXNvbXPmSvt2r5bDOGB6kegrhq9M%2F4SvRf%2Bf3%2FwAhP%2FhR%2FwAJXov%2FAD%2B%2F%2BQn%2FAMKP%2BEr0X%2Fn9%2FwDIT%2F4Uf8JXov8Az%2B%2F%2BQn%2Fwo%2F4SvRf%2Bf3%2FyE%2F8AhR%2Fwlei%2F8%2Fv%2FAJCf%2FCuG8R3cN9rdxcWz%2BZE%2B3a2CM4UDv7iug%2BHv%2FMQ%2F7Z%2F%2BzV2dFeZf8IprX%2FPl%2FwCRU%2Fxo%2FwCEU1r%2FAJ8v%2FIqf4103g7Sb3S%2Ftn22HyvM2bfmVs43Z6H3FdPRWL%2Fwlei%2F8%2Fv8A5Cf%2FAArTs7uG%2BtkuLZ%2FMifO1sEZwcdD9KnrL8R2k19olzb2yeZK%2B3auQM4YHv7CuG%2F4RTWv%2BfL%2FyKn%2BNH%2FCKa1%2Fz5f8AkVP8aP8AhFNa%2FwCfL%2FyKn%2BNdN4O0m90v7Z9th8rzNm35lbON2eh9xXT0UVwviLw%2Fqd9rdzcW1t5kT7dreYozhQO59RU%2Fh7%2FimPtH9tf6L9p2%2BV%2FHu25z93OPvDr61c1fVrLXNNm07TJvPu5tvlx7WXdhgx5YAdAa5n%2FhFNa%2F58v%2FACKn%2BNdn%2FwAJXov%2FAD%2B%2F%2BQn%2FAMK5nV9Jvdc1KbUdMh8%2B0m27JN6ruwoU8MQeoNbPg7Sb3S%2Ftn22HyvM2bfmVs43Z6H3FXfF%2F%2FIt3f%2FAP%2FQ1rzOvZqK5jxjpN7qn2P7FD5vl793zKuM7cdT7GuTvPD%2Bp2Ns9xc2uyJMbm8xTjJx2PqazK9moooooorF8X%2FwDIt3f%2FAAD%2FANDWvM6K9M8If8i3af8AA%2F8A0NqxviF%2FzD%2F%2B2n%2FstcZRRRRRRRRXZ%2FD3%2FmIf9s%2F%2FAGauzoooooorxmvTPCH%2FACLdp%2FwP%2FwBDatqiiiiiiiiiuM%2BIX%2FMP%2FwC2n%2FstYvhD%2FkZLT%2Fgf%2FoDV6bXjNemeEP8AkW7T%2Fgf%2FAKG1bVYvi%2F8A5Fu7%2FwCAf%2BhrXmdezUUVi%2BL%2FAPkW7v8A4B%2F6GteZ17NRRRRRRRRRXmXi%2FwD5GS7%2FAOAf%2BgLWNWz4Q%2F5GS0%2F4H%2F6A1em14zXpnhD%2FAJFu0%2F4H%2FwChtW1RRRRRRRXjNemeEP8AkW7T%2Fgf%2FAKG1bVYvi%2F8A5Fu7%2FwCAf%2BhrXmdezV5l4v8A%2BRku%2FwDgH%2FoC1jVs%2BEP%2BRktP%2BB%2F%2BgNXpteM0UUUV7NRXGfEL%2FmH%2FAPbT%2FwBlrjKKK9M8If8AIt2n%2FA%2F%2FAENqxviF%2FwAw%2FwD7af8AstcZRRRXZ%2FD3%2FmIf9s%2F%2FAGatnxf%2FAMi3d%2F8AAP8A0Na8zr2aiiiiiisvxHdzWOiXNxbP5cqbdrYBxlgO%2Fsa4b%2FhK9a%2F5%2Ff8AyEn%2BFem1l3nh%2FTL65e4ubXfK%2BNzeYwzgY7H0Fcn4x0my0v7H9ih8rzN%2B75mbONuOp9zVLwh%2FyMlp%2FwAD%2FwDQGr02vGa07PxBqdjbJb211siTO1fLU4yc9x6mpv8AhK9a%2FwCf3%2FyEn%2BFafh3xBqd9rdtb3Nz5kT7ty%2BWozhSew9RXdUUVzHjHVr3S%2Fsf2KbyvM37vlVs4246j3Ncz%2FwAJXrX%2FAD%2B%2F%2BQk%2Fwo%2F4SvWv%2Bf3%2FAMhJ%2FhXZ%2FwDCKaL%2FAM%2BX%2FkV%2F8a07O0hsbZLe2Ty4kztXJOMnPU%2FWuf8AGOrXul%2FY%2FsU3leZv3fKrZxtx1HuaxtI1a91zUodO1Obz7Sbdvj2Ku7ClhyoB6gV03%2FCKaL%2Fz5f8AkV%2F8a4z%2FAISvWv8An9%2F8hJ%2FhWbeXc19cvcXL%2BZK%2BNzYAzgY7fSt%2FwdpNlqn2z7bD5vl7NvzMuM7s9D7Cuss%2FD%2BmWNylxbWuyVM7W8xjjIx3Poa1Kxf8AhFNF%2FwCfL%2FyK%2FwDjR%2Fwimi%2F8%2BX%2FkV%2F8AGuZ8Y6TZaX9j%2BxQ%2BV5m%2Fd8zNnG3HU%2B5rmaK9mrhfEXiDU7HW7m3trny4k27V8tTjKg9x6mp%2FD3%2FFT%2FaP7a%2F0r7Nt8r%2BDbuzn7uM%2FdHX0rZ%2F4RTRf%2BfL%2FAMiv%2FjR%2Fwimi%2FwDPl%2F5Ff%2FGvM69M8If8i3af8D%2F9DaruoaTZap5f22HzfLzt%2BdlxnGeh9hXP%2BIvD%2BmWOiXNxbW3lypt2t5jHGWA6E%2BhrhqKKu6fq17pfmfYpvK8zG75FbOM46j3NTXniDU762e3ubrfE%2BNy%2BWozg57D1FZlezUUUUUUVS1ew%2FtTTZrPzPK8zb8%2B3djDA9Pwrmf8AhAf%2Bol%2F5A%2F8AsqP%2BE%2B%2F6hv8A5H%2F%2Bxo%2F4T7%2FqG%2F8Akf8A%2BxrF8Q6%2F%2Fbn2f%2FRvI8nd%2FwAtN2c49h6UeEP%2BRktP%2BB%2F%2BgNXptcZ%2FwgP%2FAFEv%2FIH%2FANlR%2FwAID%2F1Ev%2FIH%2FwBlR%2FwgP%2FUS%2FwDIH%2F2VXNI8I%2F2XqUN59t83y93yeVtzlSOu73rp64z%2FAIT7%2FqG%2F%2BR%2F%2FALGum0i%2F%2FtTTYbzy%2FK8zd8m7djDEdfwql4h0D%2B3Ps%2F8ApPkeTu%2F5Z7s5x7j0rmdX8I%2F2Xps159t83y9vyeVtzlgOu73rma7P%2FhPv%2Bob%2FAOR%2F%2FsaP%2BE%2B%2F6hv%2FAJH%2FAPsaxfEOv%2F259n%2F0byPJ3f8ALTdnOPYelU9Iv%2F7L1KG88vzfL3fJu25ypHX8a6b%2FAIT7%2FqG%2F%2BR%2F%2FALGj%2FhAf%2Bol%2F5A%2F%2Byo%2F4QH%2FqJf8AkD%2F7Kj%2FkR%2F8Ap%2B%2B2f9s9mz8853fpR%2Fwn3%2FUN%2FwDI%2FwD9jR%2Fwn3%2FUN%2F8AI%2F8A9jR%2Fwn3%2FAFDf%2FI%2F%2FANjXTaRf%2FwBqabDeeX5Xmbvk3bsYYjr%2BFUvEOgf259n%2FANJ8jyd3%2FLPdnOPcelY3%2FCA%2F9RL%2FAMgf%2FZUf8ID%2FANRL%2FwAgf%2FZUf8J9%2FwBQ3%2FyP%2FwDY1zOr3%2F8AampTXnl%2BV5m35N27GFA6%2FhVzw9r%2FAPYf2j%2FRvP8AO2%2F8tNuMZ9j6102keLv7U1KGz%2BxeV5m75%2FN3YwpPTb7V09eM102keLv7L02Gz%2Bxeb5e75%2FN25yxPTb7103h7X%2F7c%2B0f6N5Hk7f8AlpuznPsPSjxf%2FwAi3d%2F8A%2F8AQ1rzOium0jwj%2Fammw3n23yvM3fJ5W7GGI67varv%2FAAgP%2FUS%2F8gf%2FAGVH%2FCA%2F9RL%2FAMgf%2FZUf8ID%2FANRL%2FwAgf%2FZV2dFFFFFFQXl3DY2z3Fy%2FlxJjc2CcZOOg%2BtZn%2FCV6L%2Fz%2B%2FwDkJ%2F8ACvM607Pw%2Fqd9bJcW1rvifO1vMUZwcdz6iodQ0m90vy%2FtsPleZnb86tnGM9D7ipvDl3DY63b3Fy%2FlxJu3NgnGVI7e5ruf%2BEr0X%2Fn9%2FwDIT%2F4Uf8JXov8Az%2B%2F%2BQn%2Fwo%2F4SvRf%2Bf3%2FyE%2F8AhV3T9WstU8z7FN5vl43fIy4znHUexq7RXmX%2FAAimtf8APl%2F5FT%2FGum0jVrLQ9Nh07U5vIu4d3mR7Wbbliw5UEdCK2tP1ay1TzPsU3m%2BXjd8jLjOcdR7GoPEdpNfaJc29snmSvt2rkDOGB7%2Bwrhv%2BEU1r%2Fny%2F8ip%2FjWNRV3T9JvdU8z7FD5vl43fOq4znHU%2Bxqa88P6nY2z3Fza7IkxubzFOMnHY%2BprMr2aiuY8Y6Te6p9j%2BxQ%2Bb5e%2Fd8yrjO3HU%2Bxrk7zw%2FqdjbPcXNrsiTG5vMU4ycdj6msyiu58O%2BINMsdEtre5ufLlTduXy2OMsT1A9DXQafq1lqnmfYpvN8vG75GXGc46j2NXaK8y%2F4RTWv%2BfL%2FyKn%2BNH%2FCKa1%2Fz5f8AkVP8aP8AhFNa%2FwCfL%2FyKn%2BNXdI0m90PUodR1OHyLSHdvk3q23KlRwpJ6kV03%2FCV6L%2Fz%2B%2FwDkJ%2F8ACvM6K6bwdq1lpf2z7bN5XmbNvys2cbs9B7itPxF4g0y%2B0S5t7a58yV9u1fLYZwwPUj0FcNRXpnhD%2FkW7T%2Fgf%2FobVtUUUUUUUUUVi%2BL%2F%2BRbu%2F%2BAf%2BhrXmdFemeEP%2BRbtP%2BB%2F%2BhtWN8Qv%2BYf8A9tP%2FAGWuMooors%2Fh7%2FzEP%2B2f%2Fs1dnRRXmXi%2F%2FkZLv%2FgH%2FoC1tfD3%2FmIf9s%2F%2FAGauzorxmiuz%2BHv%2FADEP%2B2f%2FALNWz4v%2FAORbu%2F8AgH%2Foa15nXs1FFYvi%2FwD5Fu7%2FAOAf%2BhrXmdFFdn8Pf%2BYh%2FwBs%2FwD2auzoooorF8X%2FAPIt3f8AwD%2F0Na8zoooooor0zwh%2FyLdp%2FwAD%2FwDQ2raooooooooooooooooooorF8X%2F8i3d%2F8A%2F9DWvM6KK7P4e%2F8xD%2FALZ%2F%2BzV2dFeM16Z4Q%2F5Fu0%2F4H%2F6G1Y3xC%2F5h%2FwD20%2F8AZa4yiiiiiiivTPCH%2FIt2n%2FA%2F%2FQ2rG%2BIX%2FMP%2FAO2n%2FstcZRRRXZ%2FD3%2FmIf9s%2F%2FZq2fF%2F%2FACLd3%2FwD%2FwBDWvM69moorF8X%2FwDIt3f%2FAAD%2FANDWvM69morjPiF%2FzD%2F%2B2n%2FstcZRXs1FFFFFFZfiO7msdEubi2fy5U27WwDjLAd%2FY1w3%2FCV61%2Fz%2B%2FwDkJP8ACj%2FhK9a%2F5%2Ff%2FACEn%2BFH%2FAAletf8AP7%2F5CT%2FCj%2FhK9a%2F5%2Ff8AyEn%2BFH%2FCV61%2Fz%2B%2F%2BQk%2Fwo%2F4SvWv%2Bf3%2FyEn%2BFH%2FCV61%2Fz%2B%2F8AkJP8KP8AhK9a%2FwCf3%2FyEn%2BFdN4O1a91T7Z9tm83y9m35VXGd2eg9hV3xf%2FyLd3%2FwD%2F0Na8zr0z%2FhFNF%2F58v%2FACK%2F%2BNH%2FAAimi%2F8APl%2F5Ff8AxrG8Q%2F8AFMfZ%2FwCxf9F%2B07vN%2Fj3bcY%2B9nH3j09ag8O%2BINTvtbtre5ufMifduXy1GcKT2HqK7qsX%2FAIRTRf8Any%2F8iv8A41p2dpDY2yW9snlxJnauScZOep%2Btcn8Qv%2BYf%2FwBtP%2FZa5%2Fw5aQ32t29vcp5kT7ty5IzhSe3uK7n%2FAIRTRf8Any%2F8iv8A415nRRRRXpn%2FAAimi%2F8APl%2F5Ff8AxrmdX1a90PUptO0ybyLSHbsj2K23KhjywJ6k1d8Pf8VP9o%2Ftr%2FSvs23yv4Nu7Ofu4z90dfStn%2FhFNF%2F58v8AyK%2F%2BNH%2FCKaL%2FAM%2BX%2FkV%2F8aP%2BEU0X%2Fny%2F8iv%2FAI1w3iO0hsdbuLe2Ty4k27VyTjKg9%2Fc1Dp%2BrXul%2BZ9im8rzMbvkVs4zjqPc1NeeINTvrZ7e5ut8T43L5ajODnsPUVmV7NXC%2BIvEGp2Ot3NvbXPlxJt2r5anGVB7j1Nafg7Vr3VPtn22bzfL2bflVcZ3Z6D2FXfF%2F%2FIt3f%2FAP%2FQ1rzOvZq4XxF4g1Ox1u5t7a58uJNu1fLU4yoPceprA1DVr3VPL%2B2zeb5edvyKuM4z0HsKpUV7NRRRRRRWL4v%2F5Fu7%2F4B%2F6GteZ12f8AwgP%2FAFEv%2FIH%2FANlR%2FwAID%2F1Ev%2FIH%2FwBlR%2FwgP%2FUS%2FwDIH%2F2VH%2FCA%2FwDUS%2F8AIH%2F2VH%2FCA%2F8AUS%2F8gf8A2VH%2FAAgP%2FUS%2F8gf%2FAGVczq9h%2FZepTWfmeb5e359u3OVB6fjXTfD3%2FmIf9s%2F%2FAGatnxf%2FAMi3d%2F8AAP8A0Na8zrs%2F%2BE%2B%2F6hv%2FAJH%2FAPsaP%2BE%2B%2FwCob%2F5H%2FwDsaP8AkeP%2BnH7H%2FwBtN%2B%2F8sY2%2FrR%2FYP%2FCMf8Tj7T9q%2Bzf8svL2bt3y9cnH3s9O1H%2FCff8AUN%2F8j%2F8A2NdnXMav4u%2FsvUprP7F5vl7fn83bnKg9NvvVP%2FkeP%2BnH7H%2F2037%2FAMsY2%2FrR%2FYP%2FAAjH%2FE4%2B0%2Favs3%2FLLy9m7d8vXJx97PTtR%2Fwn3%2FUN%2FwDI%2FwD9jXGV02keEf7U02G8%2B2%2BV5m75PK3YwxHXd7VS8Q6B%2FYf2f%2FSfP87d%2FwAs9uMY9z61jUV2f%2FCff9Q3%2FwAj%2FwD2NH9g%2FwDCT%2F8AE4%2B0%2FZftP%2FLLy9%2B3b8vXIz93PTvR%2FwAiP%2F0%2FfbP%2B2ezZ%2Bec7v0q5pHi7%2B1NShs%2FsXleZu%2Bfzd2MKT02%2B1dPRXMav4R%2FtTUprz7b5Xmbfk8rdjCgdd3tXM%2BIdA%2FsP7P8A6T5%2Fnbv%2BWe3GMe59axqK9mrmNX8I%2FwBqalNefbfK8zb8nlbsYUDru9qu%2BHtA%2FsP7R%2FpPn%2Bdt%2FwCWe3GM%2B59aPF%2F%2FACLd3%2FwD%2FwBDWvM69mrzLxf%2FAMjJd%2F8AAP8A0BaxqKK9moooooorF8X%2FAPIt3f8AwD%2F0Na8zr2asu88QaZY3L29zdbJUxuXy2OMjPYehqH%2FhK9F%2F5%2Ff%2FACE%2F%2BFH%2FAAlei%2F8AP7%2F5Cf8Awo%2F4SvRf%2Bf3%2FAMhP%2FhW1XmXi%2FwD5GS7%2FAOAf%2BgLW18Pf%2BYh%2F2z%2F9mrf8R2k19olzb2yeZK%2B3auQM4YHv7CuG%2FwCEU1r%2FAJ8v%2FIqf41jVp2fh%2FU762S4trXfE%2BdreYozg47n1FdB4e%2F4pj7R%2FbX%2Bi%2Fadvlfx7tuc%2Fdzj7w6%2BtTeIvEGmX2iXNvbXPmSvt2r5bDOGB6kegrhq9mrzLxf8A8jJd%2FwDAP%2FQFra%2BHv%2FMQ%2FwC2f%2Fs1b%2FiO0mvtEube2TzJX27VyBnDA9%2FYVw3%2FAAimtf8APl%2F5FT%2FGj%2FhFNa%2F58v8AyKn%2BNdz4ctJrHRLa3uU8uVN25cg4yxPb2NYHxC%2F5h%2F8A20%2F9lrk7O0mvrlLe2TzJXztXIGcDPf6Vpf8ACKa1%2FwA%2BX%2FkVP8aP%2BEU1r%2Fny%2FwDIqf4102katZaHpsOnanN5F3Du8yPazbcsWHKgjoRVPxD%2FAMVP9n%2FsX%2FSvs27zf4Nu7GPvYz909PSoPDvh%2FU7HW7a4ubby4k3bm8xTjKkdj6mu6rF%2F4SvRf%2Bf3%2FwAhP%2FhWnZ3cN9bJcWz%2BZE%2BdrYIzg46H6Vz%2FAIx0m91T7H9ih83y9%2B75lXGduOp9jXJ3nh%2FU7G2e4ubXZEmNzeYpxk47H1NZlemf8JXov%2FP7%2FwCQn%2Fwo%2FwCEr0X%2FAJ%2Ff%2FIT%2FAOFH%2FCV6L%2Fz%2B%2FwDkJ%2F8ACszxF4g0y%2B0S5t7a58yV9u1fLYZwwPUj0FcNXpn%2FAAlei%2F8AP7%2F5Cf8AwrmdX0m91zUptR0yHz7Sbbsk3qu7ChTwxB6g1S%2F4RTWv%2BfL%2FAMip%2FjR%2Fwimtf8%2BX%2FkVP8aP%2BEU1r%2Fny%2F8ip%2FjXptFFFFFFYvi%2F8A5Fu7%2FwCAf%2BhrXmdezV5l4v8A%2BRku%2FwDgH%2FoC1jUUV7NXmXi%2F%2FkZLv%2FgH%2FoC1tfD3%2FmIf9s%2F%2FAGauzorxmvTPCH%2FIt2n%2FAAP%2FANDasb4hf8w%2F%2Ftp%2F7LXGUV7NXmXi%2FwD5GS7%2FAOAf%2BgLW18Pf%2BYh%2F2z%2F9mrs6KKK4z4hf8w%2F%2FALaf%2By1i%2BEP%2BRktP%2BB%2F%2BgNXptFeZeL%2F%2BRku%2F%2BAf%2BgLW18Pf%2BYh%2F2z%2F8AZq7OivGa9M8If8i3af8AA%2F8A0Nq2qxfF%2FwDyLd3%2FAMA%2F9DWvM6KKKKKK9M8If8i3af8AA%2F8A0Nq2qKKKKKKKKKxfF%2F8AyLd3%2FwAA%2FwDQ1rzOvZq8y8X%2FAPIyXf8AwD%2F0BaxqKK9mrzLxf%2FyMl3%2FwD%2F0Ba2vh7%2FzEP%2B2f%2Fs1bPi%2F%2FAJFu7%2F4B%2FwChrXmdFFdn8Pf%2BYh%2F2z%2F8AZq7OiiiuM%2BIX%2FMP%2FAO2n%2FstYvhD%2FAJGS0%2F4H%2FwCgNXpteM0UUUUUUVs%2BEP8AkZLT%2Fgf%2FAKA1em0V5l4v%2FwCRku%2F%2BAf8AoC1jUUUV6Z4Q%2FwCRbtP%2BB%2F8AobVtVi%2BL%2FwDkW7v%2FAIB%2F6GteZ17NXmXi%2FwD5GS7%2FAOAf%2BgLWNRRXs1FFFFFFYvi%2F%2FkW7v%2FgH%2Foa15nXs1eZeL%2F8AkZLv%2FgH%2FAKAtY1FFezV5l4v%2FAORku%2F8AgH%2FoC1tfD3%2FmIf8AbP8A9mrrLy0hvrZ7e5TzInxuXJGcHPUfSsz%2FAIRTRf8Any%2F8iv8A40f8Ipov%2FPl%2F5Ff%2FABrhvEdpDY63cW9snlxJt2rknGVB7%2B5qHT9WvdL8z7FN5XmY3fIrZxnHUe5q5%2Fwletf8%2Fv8A5CT%2FAAo%2F4SvWv%2Bf3%2FwAhJ%2FhXptcL4i8QanY63c29tc%2BXEm3avlqcZUHuPU1P4e%2F4qf7R%2FbX%2BlfZtvlfwbd2c%2Fdxn7o6%2Blb9n4f0yxuUuLa12Spna3mMcZGO59DWpXjNdz4d8P6ZfaJbXFzbeZK%2B7c3mMM4YjoD6CtP8A4RTRf%2BfL%2FwAiv%2FjWZ4i8P6ZY6Jc3FtbeXKm3a3mMcZYDoT6GuGorufDvh%2FTL7RLa4ubbzJX3bm8xhnDEdAfQVp%2F8Ipov%2FPl%2F5Ff%2FABqaz8P6ZY3KXFta7JUztbzGOMjHc%2BhrUrzL%2FhK9a%2F5%2Ff%2FISf4Vm3l3NfXL3Fy%2FmSvjc2AM4GO30rf8AB2k2WqfbPtsPm%2BXs2%2FMy4zuz0PsK6b%2FhFNF%2F58v%2FACK%2F%2BNH%2FAAimi%2F8APl%2F5Ff8Axo%2F4RTRf%2BfL%2FAMiv%2FjWnZ2kNjbJb2yeXEmdq5Jxk56n61PWL4v8A%2BRbu%2FwDgH%2Foa15nXs1eZeL%2F%2BRku%2F%2BAf%2BgLV3wdpNlqn2z7bD5vl7NvzMuM7s9D7CtPxF4f0yx0S5uLa28uVNu1vMY4ywHQn0NcNXs1FFFFFFYvi%2F%2FkW7v%2FgH%2Foa15nXs1cxq%2FhH%2B1NSmvPtvleZt%2BTyt2MKB13e1U%2F8AhAf%2Bol%2F5A%2F8AsqP%2BEB%2F6iX%2FkD%2F7Kj%2FhAf%2Bol%2FwCQP%2Fsq7OvMvF%2F%2FACMl3%2FwD%2FwBAWtr4e%2F8AMQ%2F7Z%2F8As1dNq9%2F%2FAGXps155fm%2BXt%2BTdtzlgOv41zP8Awn3%2FAFDf%2FI%2F%2FANjXZ15l4v8A%2BRku%2FwDgH%2FoC0eHtA%2Ftz7R%2FpPkeTt%2F5Z7s5z7j0ra%2F4QH%2FqJf%2BQP%2FsqP%2BEB%2F6iX%2FAJA%2F%2Byo%2F4T7%2FAKhv%2Fkf%2FAOxo%2FsH%2FAISf%2Ficfafsv2n%2Fll5e%2Fbt%2BXrkZ%2B7np3rZ8PaB%2FYf2j%2FAEnz%2FO2%2F8s9uMZ9z61d1e%2F8A7L02a88vzfL2%2FJu25ywHX8a5n%2FhPv%2Bob%2FwCR%2FwD7GuMr0zwh%2FwAi3af8D%2F8AQ2raqlq9h%2FammzWfmeV5m359u7GGB6fhXM%2F8ID%2F1Ev8AyB%2F9lXGV02keLv7L02Gz%2Bxeb5e75%2FN25yxPTb7103h7X%2FwC3PtH%2BjeR5O3%2FlpuznPsPStqivGa6bSPCP9qabDefbfK8zd8nlbsYYjru9qu%2F8iP8A9P32z%2Ftns2fnnO79KP8AhPv%2Bob%2F5H%2F8AsaP%2BE%2B%2F6hv8A5H%2F%2Bxo%2F4T7%2FqG%2F8Akf8A%2Bxo%2F4T7%2FAKhv%2Fkf%2FAOxrZ8Pa%2FwD259o%2F0byPJ2%2F8tN2c59h6Vd1ew%2FtTTZrPzPK8zb8%2B3djDA9Pwrmf%2BEB%2F6iX%2FkD%2F7KuzrmNX8I%2FwBqalNefbfK8zb8nlbsYUDru9qu%2BHtA%2FsP7R%2FpPn%2Bdt%2FwCWe3GM%2B59au6vYf2pps1n5nleZt%2Bfbuxhgen4VzP8AwgP%2FAFEv%2FIH%2FANlXZ0UUUUUVi%2BL%2FAPkW7v8A4B%2F6GteZ16Z%2Fwlei%2FwDP7%2F5Cf%2FCj%2FhK9F%2F5%2Ff%2FIT%2FwCFH%2FCV6L%2Fz%2B%2F8AkJ%2F8KP8AhK9F%2FwCf3%2FyE%2FwDhR%2Fwlei%2F8%2Fv8A5Cf%2FAAo%2F4SvRf%2Bf3%2FwAhP%2FhXDeI7uG%2B1u4uLZ%2FMifbtbBGcKB39xXQfD3%2FmIf9s%2F%2FZq3%2FEdpNfaJc29snmSvt2rkDOGB7%2Bwrhv8AhFNa%2FwCfL%2FyKn%2BNem15l4v8A%2BRku%2FwDgH%2FoC1d8HatZaX9s%2B2zeV5mzb8rNnG7PQe4rrLPxBpl9cpb211vlfO1fLYZwM9x6CtSvMv%2BEU1r%2Fny%2F8AIqf413Phy0msdEtre5Ty5U3blyDjLE9vY1PqGrWWl%2BX9tm8rzM7fkZs4xnoPcVi6vq1lrmmzadpk3n3c23y49rLuwwY8sAOgNcz%2FAMIprX%2FPl%2F5FT%2FGj%2FhFNa%2F58v%2FIqf413Phy0msdEtre5Ty5U3blyDjLE9vY1PqGrWWl%2BX9tm8rzM7fkZs4xnoPcVBZ%2BINMvrlLe2ut8r52r5bDOBnuPQVqV5l%2Fwimtf8%2BX%2FkVP8AGj%2FhFNa%2F58v%2FACKn%2BNdN4O0m90v7Z9th8rzNm35lbON2eh9xXQXl3DY2z3Fy%2FlxJjc2CcZOOg%2BtZn%2FCV6L%2Fz%2B%2F8AkJ%2F8K8zr0zwh%2FwAi3af8D%2F8AQ2ql4x0m91T7H9ih83y9%2B75lXGduOp9jXJ3nh%2FU7G2e4ubXZEmNzeYpxk47H1NZlFFdN4O1ay0v7Z9tm8rzNm35WbON2eg9xXWWfiDTL65S3trrfK%2Bdq%2BWwzgZ7j0FalFFUtQ1ay0vy%2Fts3leZnb8jNnGM9B7iqX%2FCV6L%2Fz%2B%2FwDkJ%2F8ACj%2FhK9F%2F5%2Ff%2FACE%2F%2BFbVFFFFFFYvi%2F8A5Fu7%2FwCAf%2BhrXmdFFFFFFFdn8Pf%2BYh%2F2z%2F8AZq7OiivMvF%2F%2FACMl3%2FwD%2FwBAWsatnwh%2FyMlp%2FwAD%2FwDQGr02iiuM%2BIX%2FADD%2FAPtp%2FwCy1i%2BEP%2BRktP8Agf8A6A1em0UVxnxC%2FwCYf%2F20%2FwDZaxfCH%2FIyWn%2FA%2FwD0Bq9NooorF8X%2FAPIt3f8AwD%2F0Na8zor0zwh%2FyLdp%2FwP8A9DatqsXxf%2FyLd3%2FwD%2F0Na8zooorZ8If8jJaf8D%2F9AavTaKK4z4hf8w%2F%2FALaf%2By1xlFezUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUV%2F9k%3D%3C%2Fqr_code%3E%3Ccurr_channel%3E1%3C%2Fcurr_channel%3E%3C%2Fchannel_info%3E%3C%2Fchannel_infos%3E%3C%2Fxml%3E";
            // 响应报文验签
            Map<String, Object> resMap = SignUtils.xmlToObject(response);
            log.info("富友微信认证返回参数:{}", JsonUtils.toJsonString(resMap));
            if (channelMerchantAccessAuthQueryContext.isTest()) {
                channelMerchantAccessAuthQueryContext.setAuditStatus(MerchantEnum.CHANNEL_CONFIG_STATUS.ALIPAY_AUTH);
                return;
            }
            FuYouMerchantParamsHandle.wxAuthQueryParamsParse(response, channelMerchantAccessAuthQueryContext);
        }
        catch (Exception e) {
            e.printStackTrace();
            log.error("富友查询微信认证查询请求失败,失败信息 message: {}", e.getMessage());
            channelMerchantAccessAuthQueryContext.setRemark("富友微信认证查询请求失败,失败信息" + e.getMessage());
            channelMerchantAccessAuthQueryContext.setProcessStatus(Boolean.FALSE);
        }
    }

    /**
     * 微信参数配置查询
     *
     * @param channelMerchantAccessAuthQueryContext
     */
    public void processAliAuthQuery(ChannelMerchantAccessAuthQueryContext channelMerchantAccessAuthQueryContext) {
        CommonResult<FuYouConfig> fuYouConfigCommonResult = channelConfig(channelMerchantAccessAuthQueryContext.getProviderChannelConfig());
        // 配置转换
        if (!fuYouConfigCommonResult.isSuccess()) {
            channelMerchantAccessAuthQueryContext.setRemark(fuYouConfigCommonResult.getMsg());
            channelMerchantAccessAuthQueryContext.setProcessStatus(Boolean.FALSE);
            return;
        }
        FuYouConfig fuYouConfig = fuYouConfigCommonResult.getData();
        // 1. 数据初始化
        MerchantAccessInfoDO merchantAccessInfo = channelMerchantAccessAuthQueryContext.getMerchantAccessInfo();
        try {
            // 新增参数转换
            String requestId = IdUtils.getSnowflake().nextIdStr();
            Map<String, Object> params = new HashMap<>();
            params.put("trace_no", requestId);
            params.put("ins_cd", fuYouConfig.getInsCd());
            params.put("mchnt_cd", merchantAccessInfo.getSubMchId());
            params.put("sign", SignUtils.getMerchantSign(params, fuYouConfig));
            String requestUrl = FuYouConstant.MERCHANT_ALIPAY_AUTH_QUERY;
            String url = domain(channelMerchantAccessAuthQueryContext.isTest()) + requestUrl;
            log.info("富友支付宝认证请求参数:{}", JsonUtils.toJsonString(params));
            String mapToXml = SignUtils.convertMapToXml(params);
            log.info("富友支付宝认证请求xml参数:{}", mapToXml);
            Map<String, String> requestParams = new HashMap<>();
            mapToXml = URLEncoder.encode(mapToXml, FuYouConstant.charset);
            requestParams.put("req", mapToXml);
            log.info("富友支付宝认证req参数:{}", JsonUtils.toJsonString(requestParams));
            String response = HttpUtils.post(url, requestParams);
            // 响应报文验签
            Map<String, Object> resMap = SignUtils.xmlToObject(response);
            log.info("富友支付宝认证返回参数:{}", JsonUtils.toJsonString(resMap));
            if (channelMerchantAccessAuthQueryContext.isTest()) {
                channelMerchantAccessAuthQueryContext.setAuditStatus(MerchantEnum.CHANNEL_CONFIG_STATUS.FINISH);
                return;
            }
            FuYouMerchantParamsHandle.wxAuthQueryParamsParse(response, channelMerchantAccessAuthQueryContext);
        }
        catch (Exception e) {
            e.printStackTrace();
            log.error("富友查询支付宝认证查询请求失败,失败信息 message: {}", e.getMessage());
            channelMerchantAccessAuthQueryContext.setRemark("富友支付宝认证查询请求失败,失败信息" + e.getMessage());
            channelMerchantAccessAuthQueryContext.setProcessStatus(Boolean.FALSE);
        }
    }

    /**
     *
     * @param channelMerchantTermContext
     */
    public void termAdd(ChannelMerchantTermContext channelMerchantTermContext) {
        CommonResult<FuYouConfig> fuYouConfigCommonResult = channelConfig(channelMerchantTermContext.getProviderChannelConfig());
        // 配置转换
        if (!fuYouConfigCommonResult.isSuccess()) {
            channelMerchantTermContext.setRemark(fuYouConfigCommonResult.getMsg());
            channelMerchantTermContext.setProcessStatus(Boolean.FALSE);
            return;
        }
        FuYouConfig fuYouConfig = fuYouConfigCommonResult.getData();
        // 1. 数据初始化
        MerchantTermAddReq merchantTermAddReq = channelMerchantTermContext.getMerchantTermAddReq();
        MerchantAppChannelDO merchantAppChannelDO = channelMerchantTermContext.getMerchantAppChannelDO();
        FuYouAppChannelParams fuYouAppChannelParams = fuYouAppChannelParams(merchantAppChannelDO);
        try {
            // 新增参数转换
            String requestId = IdUtils.getSnowflake().nextIdStr();
            Map<String, Object> params = new HashMap<>();
            params.put("trace_no", requestId);
            params.put("ins_cd", fuYouConfig.getInsCd());
            params.put("mchnt_cd", fuYouAppChannelParams.getFuYouId());
            params.put("tm_serial_no", merchantTermAddReq.getTmSerialNo());
            params.put("tm_contact_ps", merchantTermAddReq.getTmContactPs());
            params.put("tm_contact_ph", merchantTermAddReq.getTmContactPh());
            params.put("tm_prov_cd", merchantTermAddReq.getTmProvCd());
            params.put("tm_city_cd", merchantTermAddReq.getTmCityCd());
            params.put("tm_county_cd", merchantTermAddReq.getTmCountyCd());
            params.put("tm_inst_area", merchantTermAddReq.getTmInstArea());
            params.put("tm_bind_ind", merchantTermAddReq.getTmBindInd());
            params.put("tm_phone_no", merchantTermAddReq.getTmPhoneNo());
            params.put("sign", SignUtils.getMerchantSign(params, fuYouConfig));
            String requestUrl = FuYouConstant.MERCHANT_TERM_ADD;
            String url = domain(channelMerchantTermContext.isTest()) + requestUrl;
            log.info("富友新增终端请求参数:{}", JsonUtils.toJsonString(params));
            String mapToXml = SignUtils.convertMapToXml(params);
            log.info("富友新增终端请求xml参数:{}", mapToXml);
            Map<String, String> requestParams = new HashMap<>();
            mapToXml = URLEncoder.encode(mapToXml, FuYouConstant.charset);
            requestParams.put("req", mapToXml);
            log.info("富友新增终端req参数:{}", JsonUtils.toJsonString(requestParams));
            String response = HttpUtils.post(url, requestParams);
            // 响应报文验签
            Map<String, Object> resMap = SignUtils.xmlToObject(response);
            log.info("富友新增终端返回参数:{}", JsonUtils.toJsonString(resMap));
            FuYouMerchantParamsHandle.teamParamsParse(response, channelMerchantTermContext);
        }
        catch (Exception e) {
            e.printStackTrace();
            log.error("富友新增终端请求失败,失败信息 message: {}", e.getMessage());
            channelMerchantTermContext.setRemark("富友新增终端请求失败,失败信息" + e.getMessage());
            channelMerchantTermContext.setProcessStatus(Boolean.FALSE);
        }
    }

    /**
     *
     * @param channelMerchantTermContext
     */
    public void termQuery(ChannelMerchantTermContext channelMerchantTermContext) {
        CommonResult<FuYouConfig> fuYouConfigCommonResult = channelConfig(channelMerchantTermContext.getProviderChannelConfig());
        // 配置转换
        if (!fuYouConfigCommonResult.isSuccess()) {
            channelMerchantTermContext.setRemark(fuYouConfigCommonResult.getMsg());
            channelMerchantTermContext.setProcessStatus(Boolean.FALSE);
            return;
        }
        FuYouConfig fuYouConfig = fuYouConfigCommonResult.getData();
        // 1. 数据初始化
        MerchantTermAddReq merchantTermAddReq = channelMerchantTermContext.getMerchantTermAddReq();
        MerchantAppChannelDO merchantAppChannelDO = channelMerchantTermContext.getMerchantAppChannelDO();
        FuYouAppChannelParams fuYouAppChannelParams = fuYouAppChannelParams(merchantAppChannelDO);
        try {
            // 新增参数转换
            String requestId = System.currentTimeMillis() + "";
            requestId = requestId.substring(0, 10);
            Map<String, Object> params = new HashMap<>();
            params.put("trace_no", requestId);
            params.put("ins_cd", fuYouConfig.getInsCd());
            params.put("mchnt_cd", fuYouAppChannelParams.getFuYouId());
            params.put("tm_serial_no", merchantTermAddReq.getTmSerialNo());
            params.put("sign", SignUtils.getMerchantSign(params, fuYouConfig));
            String requestUrl = FuYouConstant.MERCHANT_TERM_QUERY;
            String url = domain(channelMerchantTermContext.isTest()) + requestUrl;
            log.info("富友查询终端请求参数:{}", JsonUtils.toJsonString(params));
            String mapToXml = SignUtils.convertMapToXml(params);
            log.info("富友查询终端请求xml参数:{}", mapToXml);
            Map<String, String> requestParams = new HashMap<>();
            mapToXml = URLEncoder.encode(mapToXml, FuYouConstant.charset);
            requestParams.put("req", mapToXml);
            log.info("富友查询终端req参数:{}", JsonUtils.toJsonString(requestParams));
            String response = HttpUtils.post(url, requestParams);
            // 响应报文验签
            Map<String, Object> resMap = SignUtils.xmlToObject(response);
            log.info("富友查询终端返回参数:{}", JsonUtils.toJsonString(resMap));
            FuYouMerchantParamsHandle.teamParamsParse(response, channelMerchantTermContext);
        }
        catch (Exception e) {
            e.printStackTrace();
            log.error("富友新增终端请求失败,失败信息 message: {}", e.getMessage());
            channelMerchantTermContext.setRemark("富友新增终端请求失败,失败信息" + e.getMessage());
            channelMerchantTermContext.setProcessStatus(Boolean.FALSE);
        }
    }
}
